ML }  X c0C)HCCH Mhhݩh `eCDiCD`  RyHP   * 1H0芢@) Y0.Ș` i #(PMR\ \b Pgi 0  % @ / ՠ`d   0DDԝLyN@  )?HI Y0`HIJH) * J j * hJJJ )HJ h i     } YS S0 i`΢ϣ߳H J3xj2h} 1 |9 ӭ45(420 * (0241өX.`  R *i)Lvw  ~*P}E 5 LN(G E  r s k rsrL ( E LO(0d( L iE0O +)$IC  H S8 }q p h   j 8no CDLQ CFl M  LO Ri)Llk2'")*F }$F$F$F$F$ 5 )ШF/Șl]kpqС,LQ/A! Ti)Zlk@ ܬ/i)(")")k }$F$F$F 5$/L /lF@jj(LNkle$$%8(k()` R 8 ELO Ri)^>jf | NrC s } ) vw5g   enfo Glvw LQ@iLm>j FL ~Jjjjii p qEh }jlrs`LQ:$ȱ$@+[_#{ 8  Խut! ai 8   E I   ] C } H h    ˰ 8  N   Lm E  ,  [ `LQ ,/ 8 ~/  Ơ? ѩ}/  [ /Lj0?MoLn FjMqLp NklLOLQnLoMlNLO R"(+}ըHH`Q R!!  % !   / .   FȑF! /GF \H"+0+* }! F tLQnm: J~nTF1F  *n+)5! n (, n)1JJJn(n*o} I ,0  ci a oF? @ , 8,0 ʩ0H Eh   i}  D ]DmmFLQvtu`*&!*@h ] 0 ^0` c 0l$$%}()()%*&J%H,@hH hH@,h $% 8i8$(%)0hhH ]h`() c 0H c 0 h}`hhh&JJ ](ll  LQ0  /qnoHH 9 9 H H  I9  9 } Nd EH  Q8 o n  FnoL HII/ Ih8`h`Lnon`no`u F }E VEhLO/luF l0BF/lɜɛ׽hE N  b VFL FREE SECTORS C} H) *Fh ):FȽ F FC IH' 0 d  i:Fȩ/F.l`CD/08HDIC}IHȰ/F`ȱ$>.+.i ȱ$:刄H !A \ Hȱ$*?ȝ 2. ? [_{ ,0}-:) 0$:>WI  IТ,LQH  0hLd ~ t u`C ?( 0(C.` E } R =! .ti S0N EE D XC )0')AY  )ע ? 0E088FG \o}n  (HhLcL3 iJ i Lqp 0=rspnqopqlk`jZj0  j FL`H}FhȑFȽlFi0 h FFLFpvqwgneofLF pq7  G0i 0 FJJh1FqȱFpȱFk`B!}08`hEE D 8. =D}tui( TʩL`b!)    cȌaȌd b`aab}H8 hdaHcd8 cH hHH  \h hc` =Hh I8ih( t  ( t(!` L\}CJfCJfCJfCDfC` a  HII  INdh  `h  `n)8jHniPoijIjFIjFIjh` a } I 38  8H0 I  ' H LQ8j Y  8j NdY  &I &I &IHeH.p!}Iiq  `!.莿 2Jjj }.m Ȉ!m FG` ɩLQ z "} e Hi04 \ Ȍ  8 i h !`I0 `C Y8.`DOS SYS#} I  ` ~ݩ.C/`ba.m۩mѤC9 `C L] H  ,- '0 l $}, BLVDE`D1:AUTORUN.SYS8hhJ ȱHȱIȱBȱDȱEeeHHLV)  %}1*  ,,p-  0 I &  '0   Lw)l, 0  I&LD1:MEM.SAV&}E:D1:DUP.SYSphHS@L0ֱ""4scld7qҀVAB^AYh:pNh'} D  C D     )16CS S)  C)D1 p p (}0 C9DI pCDL~CiCDiD` DD˙` d J)L !)}D L(( LL()  L| L( S LH 0p n  *} CY?  q  L L  ` )+} `A! d߰")-݆ "  $G@LLL&0") $G%,}H0 3S8`G ȱG ȱG   Gȭ Gȭ GG}GHiH8(()) G$H% `(0-})8` d)L ݆ & LGȘ ݆LL d  ! LL d)N>Q  HH).}  hyhyB q L> Lm JJ  Ln*` dB%'/}8  H H` 1 { LL   !L     Hh SY?  q  1L0}  !? S   q 1 L   Ll  Lg E`L   !L)  q 1L1}) `L0AM݊L݉ ML  N݆LLLNLMLHG!@2}1F GȱGLLEEȩÑEȑEEȑE Ed E7EȩE  q3} L !,0,0SGɛ L 1 !L EHEh W G gLLSROTCES EERF 4} G) *Gȩ GȽG GȌd q q G`  8   0G  `D5}CEDC0X:Ȣ Y ȱC* ? 0.. , 0%n ?A[ 0 : L`L  `, 0`Y6}`piH n0)բY? 08`0 7}  0$L GGȽG L `8L`L8}8`  05G)݁,G)ȱGȱGHh0})Hh` B! 8`8iiiLE`9}E8FEh( l0`ɃLL L8^~jj8jHi hEEEiEȱEiE` dTE:} H8EEȱEEȩEh J E8   . m  i`LI!)E1FR;}1LJ舩9GIH`LJJ`HGHh l`<} S gL   8 rii `дCDCG W  =}C  Lq` X٨`DOS SYS IIIIIIIIIIIIIIIC`0 ߩ0}}>} HE |||||DOS DOSDOS SYS }?}}@}CDOS SYSA} 0`BDELV !B B}`LVUQ   ]   TU J ]L!T  #      TU C} L ? .  t`GBJ V~DEHI B V0dVD}QDEHI VF9 ,0 ,0 s0hhL  L` H hDHEhE}DEL8HI   0 HI,0 0  9 .G VLOF},0 L4*IJ`llD1:AUTORUN.SYSNEED MEM.SAV TO LOAD THIS FILE.D1:MEM.SAV J y08 B|DEHIG} V0 0`B;DELV䌚 !B y`@ʆ v s? F0Ξ05: [ BDEHIH} VY8 B V  @  /DE `E:D1:DUP.SYSERROR-SAVING USER MEMORY ON DISKTYPE Y TO I}STILL RUN DOS B;DE J V (` 9 V⪍ ઍ  -J}LLu DEHILV 9 .l 9 .l  `` s$B VBHK}I|DE V BLV nB,DE J V* \*` B V BLVDEHI BLVLL}1 3u H232435; 1 ;  hh@2 e1i1LHҍ 00) 08 109hh@ Ҡ2eM}1i1232435ޥ<<8}#8$$******************************$$* *$$* NO-FRILLS ALTO}ERNATE CURSOR *$$* BY TOM HUDSON *$$* ANALOG COMPUTING *$$* *P}$$****************************** s-AVAd"!% :AF:@,OAF:@,a@Q}s@@)&(}PRESS TO INSTALL CURSOR)UU169,1,133,13,169,0,133,12,169,0,141,7,212,169,1,141,11R}1,2,162,1,160,40,169,7,32VV92,228,169,58,141,47,2,169,2,141,29,208,76,0,0,216,169,1,141,240,2,169,58,141,47VV2,169,0,S}170,157,0,6,202,208,250,165,85,10,10,24,105,48,141,2,208,165,84,10,10,10VV24,105,39,168,169,240,153,0,6,238,109,1,173,109T},1,74,74,74,41,1,208,4,169,15,208!!2,169,0,141,194,2,76,98,228 D2:ALTCUR.BAS168,169,240,153,0,6,238,109,1,173,109X0100 ;0110 ;ALTERNATE CURSOR HANDLER0120 ;0130 ;BY TOM HUDSON0140 ;0150 ;ANALOG COMPUTING0160 ;0170 DOSINI = $0C0180 V}PMBASE = $D4070190 HPOSP2 = $D0020200 COLPM2 = $02C20210 CRSINH = $02F00220 ROWCRS = $540230 COLCRS = $550240 SETVBV = W}$E45C0250 XITVBV = $E4620260 SDMCTL = $022F0270 GPRIOR = $026F0280 GRACTL = $D01D0290 ;0300 ;INITIALIZATION CODE0310 ;X}0320 *= $01000330 INIT LDA # >INIT ;alter DOS init0340 STA DOSINI+1 ;to point to0350 LDA # VBLANK ;point VBLANK0420 LDY #  B $6-R:,@$6-y+6-%++"@ k},&+"@,,$@96- @y6-?:<<<8%@%+"@,$@,<<<@,d%2 l}@G2dF:B2R,"Ap4B2x*T:,"4 AP m}(H2"@*+&@H,'@"8,*"@>6-H A`2O6-%@!@9)6-76-% n}@C!@O6-@<H6-%8,6-%8,$6-%8,0B2I<B2PHB2QF F:B2`,! o}AuZ @))6-++"@,&+"@,,$@-@@?6-&++ @,&+!@,,$@ p}G6-%6-?:<<<8%@%+"@,$@,<<<@,O6-%@!@9)6-76-%@ q}C!@O6-@H6-%8,6-%8,$6-%8,0B2I<B2PHB2Qt$F:B2V%,! r}*"F2@@@@ZB2R%f6-@t6-%AM+2@@$+ s}@,@F:B2`,!C'M Au   $p4@w6-'"@*'4 Azr6-R:,F6 t}-%++"@* &@,&+"@,,$@r6-?:<<<8%@,<<<@,O6-%@!@9)6 u}-76-%@C!@O6-@j%206-%8,;6-%8,F6-%8,RB2I v}^B2PjB2Q%F:B2`,!'% Au("&@(6-%6-&@($m"@)"@ w}'6- @K2$@@@m2 A`Xk-A(6- x} @;2@@g6-?:<<<8%@,<<<@,k b -AU6@<2 y}@@`2@AU&@@d 22@ z}L-AU@+AM2A@@q2@@@$@2@ {}@@6- @ VB2H'B2x56-&@W2y |}2@2@A`O-@@#,( aM oVr }} >-@ C(I!O6-j%-@A % B@-&@6@>2 ~}j6-?:<<<8%@,<<<@,x6- @2$@@@ 6-E|%2 }36-%AU6-%@&+!@,$@n'@"P:'@,|6-%@JUB }2H'B2I9B2PKB2QU B'f6-F:A,&@(6-&@4A }B6-$AVP6-$AV\BByf+'j+@%@'-@@<(@CLIMBERN-@ }@j(@ٺΠ$'c-@7(@ҠǠI-@@ c(@ }.'.-A*%F:BsD%,. ~';@,;@,;@,;@,;@,;@ },;@,;@,;@,;@,;@,;@,']]9@,9@,9@,9@,;@@ },9@,;A ,;A,'--@A")67<,.>:,- '--@@")67<,.>:,- }'--@@")67<,.>:,- '--@@")67<,.>:,- '--@@")67< },.>:,- '--@@")67<,.>:,- '--@@")67<,.>:,- '--@@ }")67<,.>:,- '--@@")67<,.>:,- '--@@")67<,.>:,- '7- }@"3@d$@%%7 '7-@"3@e$@%%7 '7-@"3 }@f$@%%7 'q-@!@%")67<,.>:,- I-@@@m67<%@,.7@! }<@%,q '++67@&<@',.7@!<@",'aa6.W ٠Π }Ϡ 'C +/6-F:A`,%AV$F:Aa,C%@(@'Q-%@%@'' }@+ 7AVQ0@@@'9AY@F'B2w@9B2u@(x 6-C:,68 }@,-C:,068@,-C:,B68@,-C:,T68@,-C:,f68@,-C:,x68@,-C:, (QC-%A%@ }$@%A%@$@%@G"MQ (QC-%A%@$@%A%@$@%@ }G"MQ (QC-%A%@$@%A%@$@%@G"MQ ((36-@6-' }6-@36-2(!"@6.6.!6.<(!"@6.6.!6.F(!"@6.6.!6.K(! }!@6.6.!6.P( 6-C:,6-C:,6-C:,Z(p06-?:<@<<<<@@<@,D-@@ }l%%AU%@$@@:7<,,p d(p06-?:<@<<<<@h<@,D-@@l%%A }%@$@ @:7<,,p n(p06-?:<@<<<<@@<@,D-@@l%%A %@$ }@ @:7<,,p (9AA'AA 9AA(Z (}AR@--@<( }ź N-@Z(κ ("-@)"(Ⱥ )U-@@"@+-?- }@@@M(>:@,Q U  )S-@#/( LEVEL:S0@$@%@@)E%6 }-P:H:,$@0%@,468@,-@-@E()-@@")K%6-P:H:,$@0%@,K }O:&+8&@,,, @B0,)5#-+&@,$@%@((168,-5 6)-@@@)A%6-P:H: },$@0%@,AO:&8,, @B`J)%!B2R%@H%$@% T) @B@^)-@ }@6@xO:&8@,, @)O:&8@,, @)H:,!+&@,'@%?P6-@h)$ }"-@$( m)6- r) @B@|)-@@)-@@6@ }xO:&8,, @)O:&8%+"@,,, @)H:,!+&@,'@%?P6-@)."%-$ }@%@.( )6-  )!#BP%+&@,$@-6-@96-E6-@TQ6-@ }]6-@i6-m"6-$@%@H-@@"68,- )B"6-$@%@H1-@ }@5">68,-B )B"6-$@%@H1-@@5">68,-B )-6-?:<<<8@ },<<<@,I-AU@W6- @iA2@@$A@& } )9%29!@*@-@B:,&@ .-@#@(7<%@ , }+jT:,"*-@#H( LEVEL: T6-@`6-j @ +)-@@ }  ) B8Jff216,104,104,104,133,213,104,24,105,2,133,206,104,133,205,104,133,204,104,133,203,104,104,133,208B }Jff104,104,133,209,104,104,24,101,209,133,207,166,213,240,16,165,205,24,105,128,133,205,165,206,105LJaa0,133,206,202,208,2 }40,160,0,162,0,196,209,144,19,196,207,176,15,132,212,138,168,177,203,164VJ``212,145,205,232,169,0,240,4,169,0,145,205,200,1 }92,128,208,224,166,213,165,208,157,0,208,96 N56,60,56,56,16,254,56,56*N56,60,36,36,38,48,84N56,60,56,56,16,254,56 },56>N56,60,36,36,52,6,8HN28,60,28,28,8,127,28,28RN60,60,36,36,100,12,8\N28,60,28,28,8,127,28,28fN60,60,36 },36,44,96,8pN92,92,93,93,73,127,28,28zN28,28,34,34,98,3N29,29,93,93,73,127,28,28N28,28,34,34,35,96N""60, }126,219,219,126,60,36,102N$$60,126,219,255,231,219,255,170N!!60,102,102,189,153,129,66,0N%%240,240,240,255,255,240,2 }40,240N15,15,15,255,255,15,15,15N!!85,85,170,170,170,170,85,85N128,129,29,126,126U12,12,8,12,8,12,8,0U }48,48,32,48,32,48,32,0V##192,192,128,192,128,192,128,0a++38,-2,1,-1,2,8,1,-1,1,-1,22,-1,1,1,-1a4438,-2,-1,2,1,22,-1. }5,1.5,1.5,-1.5,38,-1,-2,1,2a--8,1,2,-1,-2,38,-2,-.5,2,.5,38,-1,-1,2,0a++38,-1,-1,1,1,8,2,-1,1,-2,22,-1,2,-2,1a5522,- }1.5,-1,2,.5,22,1.5,-2,-.5,1,22,-.5,1.5,1,-2D2:CLIMBER.BAS-1,2,0a++38,-1,-1,1,1,8,2,-1,1,-2,22,-1,2,-2,1a5522,- Bg~ } }G +!-AA%"+4(968 G6-?:A,55169,96,141,232,2,169,0,141,231,2,133,8,76,0,160}D2:MINICOM1.BASA%"+4(968 G6-?:A,55169,96,141,232,2,169,0,141,231,2,133,8,76,0,160@AAK130K140K750K145K831K831K832LRKL} @ }p+6-A(6-A}46-Au@6-APL6-AX6-Ad6-A p6-B"%6-F:A6,%AV$F:A7,16-=6-}A@g6-F:@,%AV$F:@,%@@t9@,68,-AR@LS 6-F:,6-F:%@,}%%5%%@HF:%&@,S68,-%N'6-%$AV'!A AQK@K( } : /P:'@,%@ *V_(%%A`&P:'AV,$AVC%%AaP:'AV,Q6-%@_}6-%@+ "@ !6-%@+ A'"@"6-%@' A"@T A0)}"@!)"@6%6-@) "@ A@+"@  ! A+ A`;"@  }! A-6-@21 ; Ae"@1 A`  A6-%@6-F:,$x 6-%@}$1 6-%%6-P:'AV,.6-&$AV1$o@w'@@24(ӠB-B"K6-}F:,a@v*@2e o A.6-F:%@, !@$ . AL6-F:%@,1-8,%&@}@:F:,> B L A&F:%@,  & A"^@@&(3%@F:%A`},L%@F:%Aa,Z6-%@^ J4AR'@@24(T F:Ad,@A }H'B"A$6-?:B",' #   #@EA   "@A2 "@pA4} < 6- 6-F:%@,<"@")"@ A3 A6 )  A 6-% A)  % 6-} A!6-%@%   6-  6-   ; 6- 6-%@ %6-) 76-%@; H 3 6}-6-%@  %6-36-%@R 36-Ab 6-# )6-3 A\ #6-Aa 6-A}# p 9 6-  6-' A56-%@9 5 6- 6-  !6-5"@8A7@}7A ;6-@$ 6- ! '6-+ 76-A ; .- 6-  6- )6-%@- 8G 6-} 6-%@'6-A + 16-5 C6-%@G t;6-@V 6- ! '6-+ 76-A7; }- 6-  6- )6-%@- G 6- 6-%@'6-A7+ 16-5 C6-%@G   }6- 6-)  6- )@'A )   A)"@2AB@4A }6-A6-[ 6- 6-%@ %6-) 76-%@C6-AG ["AAA S6-A@ }6-@# /6-AD3 ?6-@C O6-@$S + 6- 6-@ #6-' + ,A 6- 6}-A #6-' 36-@7 A A`h%6-Av6-AD% AAp-  6-6-%@# ' }-6-z16-Ab 6-# )6-- 1 S6-Ah 6-# A/6-AR3 ?6-A)C O6}-AS L*!A'* A'6-&A'*$TK@@(H(Ҡ F:%&@,%F:%&@,$AV}Kl 6-Ai 6- v 6-AA{   6- 6-  6-As  6-@v   6- }6- 4!6-%@ A!6-/6-%@9 A?6-M6-%@W A]6-c6-o"@e6}-$A%H!)"@f)6-$B%$A%\!'6-P:'AV,$6-&$AV'$!=6-P:F:,'@,*6-F:,}&$@:6-$@%=$!+  6-A3 '6-A+ !56-%@ !6-A3% 16-A5 } D2:MINICOM2%=$!+  6-A3 '6-A+ !56-%@ !6-A3% 16-A5   \D 6-6-}@ .6-@6-F:,$6-AV. A & 6-6-@6-F:,&6-%d) 6-6-AU!6-A `})6-%n 6-x 6-% A  6-% A 6-6-"A ! 6-%6-%}! A $D2:MINICOM3.BAS 6-% A 6-6-"A ! 6-%6-%3}~##PLEDICCCCWIDTHCXC264NUROTPREC70C2COTEMORDJJCTBITCHFILLPMBASMLM1M2M3M4}M5M6M7LT }@@@} !"#$%&'()*+,}-./************************* P/M CREATOR/ANIMATOR ** BY SCOTT SHECK ** AN}ALOG COMPUTING ************************* B A! ԛ6-+%,$+ ,8 -B2H%} )-@8( C A&5@ ',@%$CB2R@%$@ A&B6-@'}6-9B2H%A%@:7%,,"9B2H%A$ ͭԛ?6-@ ?(' right - TO SELECT bu}tton - TO DISPLAY @),: 6-#T:,"&6-+&@,'0 AS: AR:,@A" }@2,"@ "$ 6-% A ț6-+ ,$@:7%,,%67%<%,.>:,16-B2V%}6-@' A1 A`$+ ̮, -68,-8, .#"@F B # A/ BP}3-@@(6" -6-8,"-@";8,%F:%,%@   A&5X$] }қ^ A&7_3 AV6-A%)6-@3 Ar$ ΛP6-A%6-@.6-F:,'@};P:,)"F6-F:,%P A6-F:,&@( -@%$%( ($Ҩ©) A&7} AV) A$Ψ©66-F:,'@!P:,)",F:,%6 AF:,&@}(-@@ %( F:,($&6-?:C:,,$INVERTX6-?:C:,,$RIGHT6-?:C:,,$LEFT6-?:}C:,,$DOWN6-?:C:,,$UP 6-?:C:,,$INVERSER. A&@ A&E#6-?:C:,,&$.ERASE ě}= ( PRESS play,# A&E' =( LOADING DATA.....˺ 905 OPEN#C1,C4,CZ,"D:FILENAME.EXT"#Ad@c}#C:! )! A% -) AQ%6-8, -)% 6-@:}7%,, AU  6- AR$ śB ( PRESS play & rec,) A&E- B( SAVING DAT}A...JJ˺ 955 OPEN#C1,8,CZ,"D:FILENAME.EXT":?#C1;WIDTH$:PUT#C1,PEEK(704):Ad@c)@C:0 }:*F:,& -*F:A%,&6-8, -*F:%,   $Š -4 A} &( data ?0 A&F4$6-8,% A&$-@'46-A(-@# *(.4 }A (6-& 6-'  A&D $ٛN ( READY PRINTER% A&E*4 AP}N@P: !(!( BGRND COLOR=F:,"( POKE 559,$J -(!(PLAYER J(PO}KE %,F:%, :REM COLOR)55(POKE B2V%,@:7%,, :REM WIDTH+E(DATA !-8,8,%,(F:},78,%A(,E 3  (G$K śL2 2(&down-SLOW SEQ.-left up-FAST STOP-rt.Q 6-V}B2H%8,AZ 6-R:,"@ 6-%\-"@ A&6# A&A- A 1^"@ A@}`"@6-+&,$+!,d0 -  B2H%8,06-+%,$+ ,o At -u3 !( frame }% (0-2)%3!AAv1 68,--@%$ ($ ''1 A˛# 6-6-1#6-A(} 6-%(>:,6-6 F:B2y,@A `6-F:A,0A+",$@2HB2Q+},$A`B2U+,$A/ 6-T:,R:,"@*%6-#/ A  *+)",A H 6-R:,*6-}%+"@,&+"@,H6-%+"@,&+"@,$3 ԛ4E!@4) @'6-%6-16-@C; }A&DE A&> "6-C"@#6-H A M( A%R A! ŠΠě }6-@:7@5&,,6- 1 6."@:,"&A($+ ,*6..16-6 , (6-8,%"6-%F:,, A& !!T}:,"*R:,"@A%0 A  $' ŠԠқ( ) -@7( $- }ӛ.  A T:,"A&/ Q6-@  A&D# A 1G")"@)!@* @Q A&A2 / $@P}%!@* @/ A&B4 A&66 < #6-@'%@$+ ,/6-@C9 A&D<$8  "6-: }"@#6-; A&F ӛK ; 6-8,P:'AV,8&AV$P:'AV,;$L # -@3} (PLYR #$M / ( COLOR(0-255)?( A&F,/$P > -5(' ;->}$Q -@($R 6-?:A,6-8,S O -)2@%@@46-F:%,> A&B L2}O$T 5-@6$2@( 225$U  -( PRESS any keyV AdAUW R:,@}' A&X F:Ad,"AUA&GY $N ś Nc6-6-@'6-@36-@?6-@}K6-@"W6-Ac6-A&@!N= +@/6-F:A`,%F:Aa,$AV=%AR"NA#Nj}A@j(@ player creator & animator  Ԡ$N ɛ%ND-A6}AC"!% D72,165,208,141,27,208,104,64&N3A#@!A3A@'N̠ś(}NN-ARA682%AP@@ @%D N2)N̠қ*N'-@A"#A}%' +NVV104,160,22,132,84,162,27,134,85,164,84,177,0,133,2,162,8,134,4,38,2,176,4,169,46,N>>208,2,169,160,32,164,246},198,4,208,239,198,84,208,221,96-N9@,;@,;@,9@,9@,;@,;@,;@9, };@,;@,;@,;@,;@,.N`;@,$-@@9("467,.>:,8 L-@ }@P"\67,.>:,` /NS-@@"'67,.>:,+ ?-@@C"O67,.>:,S 0NS-@ }@"'67,.>:,+ ?-@@C"O67,.>:,S 1NS-@@"'67,.>:,+ ?-@@ }C"O67,.>:,S 2N+-@@"'67,.>:,+ 3N ԛ4N)+)6-F:A`,%AV$F:Aa,9NK }%@p%%@@9%@A0KBBAN Я͛N46-F:A,&@&BBy46-A}V$N BPB2wNL -68,-"B2V%467%<%,.>:,HA%AL N-B2QA}!A-B2YNM)6-?:C:,<%AF<@7<A,;B2UAMB2`AN))6-?:C:,<%A}<@t<AU,N/6-?:C:,<%A<<,/B2R@PΠԭЛPoA@$'AAD}3A?ARQ@@c@@#o-@PVV(N P0 P1 P2 2 2 2 46 4}6 46 191 191 191P'@!@@ '-Pll(dӺEDIT M-EDIT WIDTH RESOL. } COLOR LUMIN. COLOR[B]=LUMIN[B] INVERT SCROLL P[[(SSCROLL  SCROLL  SCROLL  INVERSE ERASE LOAD DATASAVE }DATAPOKE DATAHARDCOPYP*@@9*(ANIMATE [0-1-2]P_ AI,@@1/@#@;@!M,}@@ _/@$@ P A`,@%%/@%7,@@I/@@ [,@$@ }m/@$@,@@/@@ P,@@ ',@#@1ASC,@#@U/@}#@_A@q,@#@ { A A 1AR A&6$RŠΛR^ 6-6}-@b&68,-%Ad768,-%A H68,-%AvR B`^SINGLE 62R;6-+AU,$A;6-?:C:,<%A}<@t<,R>/6-?:C:,<%A2<@<$+"A,,;AY>$Sd6-AU6-@F,68,-%A=6}8,-%AN68,-%A8X BAdDOUBLE-46 S-?:C:,<%A X<@7<,&$*S̠Š4SVV104,216,}169,1,133,2,169,22,133,3,164,3,177,0,170,164,2,177,0,133,4,138,145,0,164>SVV3,165,4,145,0,230,2,198,3,192,13,16,228,96,104,}160,23,177,0,74,145,0,136,208,248HS[[96,104,160,23,177,0,10,145,0,136,208,248,96,104,160,21,177,0,200,145,0,136,136,16,247}RSZZ96,104,160,2,177,0,136,145,0,200,200,192,24,208,245,96,104,160,22,169,255,81,0,145,0\S^^136,208,247,96,104,169,0,160,2}3,145,0,136,208,251,96,104,104,133,1,104,133,0,104,104,168fS66104,104,145,0,136,16,251,96,1,2,4,8,16,32,64,128D2:PM}CREATE.BAS,208,251,96,104,104,133,1,104,133,0,104,104,168fS66104,104,145,0,136,16,251,96,1,2,4,8,16,32,64,128D2:PM 1211DSDATHEXLINDATLIDDBYTPASCHKSUTOTAIN@!!} *** FIREBUG ***I @ 1(MAKE CASSETTE (0), OR DISK (1)5!"}I!@@ C BC0,1,2,3,4,5,6,7,8,9,0,0,0,0,0,0,0,10,11,12,13,14,15(r;@,9@",/-!#}@"3"<68,-@ L6-A V#A` A r( CHECKING DATA286-%@(LINE:!"8B:,@!$}A <F%6-F:A,%F:A,$AV+C(LINE  MISSING!FFq-@@@56-@:7<,,&@H!%}[6-@:7%@<%@,,&@Hq6-8,$@%8,P."@*@ $". @PZ% 6-%!&}!A %6-&Ad  ""@Pn A x F:A,@A "Ap(!'}A`*@A$)*@@<*@A%O*@@b*@u*@@6!(}@<-@@**@. 9@<(Ag+("INSERT DISK WITH DOS, PRESS R!)}ETURN8;@,<g@@ D:AUTORUN.SYS*@AU)*@AU<*@!*}O*@@6b*@AQu*@@T A{((READY CASSETTE AND PRESS RETURNH@@!+}A(C:R#A0f-@@@j"w*@{ M(( WRITING FILE#6-@/6-A 9#AC!,} A M @P(BAD DATA: LINE ^^0,39,216,7,255,7,169,0,141,47,2,169,60,141,2,211,169,0,141,231,2,133,14,1!-}69,56,141,232,2--133,15,169,36,133,10,169,8,133,11,24,96ddA9248589A9088581A90085888580A000B188918088D0F9E681E689A589C!.}938D0ED4C2408A9228D2F02A90485C7,700ddA90185BBA90185CD8D06D08D07D085BF201013A906A20BA0AC205CE4A907A20CA068205CE4A9C08D0ED4!/}AD1FD0,938ddC907F0068D69094C5708AD6909C906F02CAD0FD22904F0E5ADFC02A208DD6009F005CA10F830D686BBE6BB86BD,465ddE6BD20D21!0}A20E112A9FF8DFC024C5708A9008D6909204910A90085BF85CDAD1FD0C907F0034C3108ADFC02C921,450ccD026AD0FD22904F01FA90185BF8DFC0220!1}1013ADFC02C921D0F9AD0FD22904F0F9A90085BF8DFC02A5DFD007A9,76dd0185DF206519A5E0D007A90385E0202318A5D9D00F20380BA5A2F004A90B!2}D002A90885D9A5D8F010A5CAD00CA9,400$dd3C85CAC6C9D004A90085D8A5BEF0034CA508A5BC4AC9109002A90FAABD500985BE20880920161AA5E4D01!3}4E6BC,812.ddF8A5BD18690185BDD820D21A2004134C9F084CA50814131211100F0E0D0C0B0A09080706051F1E1A181D1B3335,3688dd3000A59885!4}90A5998591201C19C6E3300920DD1A2004134C9F082004134C3108A90085E4A21D86D5BD1E05D003,441Bdd4C310ABD5A05858EBD7805858FA000B18ED!5}D0005F018A9009D1E05A90C38FD000529060A0A0A859F20951A4C31,251Ldd0AA9008D69138D6B13A5D8D008A901BC0005996113A90385D6A4D6BD5A05!6}18795913858EBD7805795D13858FA0,883Vdd00B18E297F85D3A8B96113F012B97413C9FFD00BA5D69D3C05206C0A4C310AC6D610C9A90485D2BD3C051!7}005AD,915`dd0AD229039D3C0520410A1009C6D210EAA9FF9D3C05A6D5BD1E05F002E6E4CA30034C8E0960A8BD5A0518795913,421jdd858EBD7805!8}795D13858FA000B18E297F85D3A8B96113D003A9FF60B97413CD0AD290F5BD5A058588BD78058589,981tddA900A89188C8918888BD0005918EC818690!9}1918EA58E9D5A05A58F9D7805A5D3DD0005F0034C2D0BA9009D1E05,801~ddBD0005C908D008A90785A3A90AD006A90785A4A90885D7A90385D6A4D6A5!:}8E187959138588A58F795D138589A0,980dd00B188297FC901F04AC906F054C908F042C90AF03EC90CF048C90FF036A21DBD1E05F00ECA10F8A90185D!;}8A964,494dd85C94C2A0BA9019D1E05A9FF9D3C05A5889D5A05A5899D7805A5D79D00059188186901C89188C6D630034CBE0A,275ddA90060C906!<}D0F9686868684C6A09A5988588A5998589A000B188C906F002D030AE7802BC8713100160A5981879,376dd5913858EA599795D13858FA000B18EC901F!=}0E8C90CF0E4C90FB0E0C9069009C90EF00568684C6A09C900F00AC9,907dd0EF006A90185A2D004A90085A2A90E9188C8918888A906918EC818690191!>}8EA58E8598A58F859960D8A207AD0A,318ddD229559D8804CA10F5A5CD0AAABD850C8D3002BD860C8D3102A9918D0002A90C8D0102CE350E102DAD0AD!?}2293F,629cc090F8D350EEE340EAD340E29010A0AAABD890C8D990EBD8A0C8D9A0EBD8B0C8DA10EBD8C0C8DA20EA5BFD05885,29dd4DCE320E103!@}0AD7802C90FD004A200F002A6A2BD2F0E8D320EEE330EAD330E2901F013A6B9BDE00EC914D007E0,630dd1DF006E6B9E8DEE00EA5CAF002C6CAA5E0F0!A}02C6E0A5DFF002C6DFA5BEF002C6BEA5D9F002C6D920751420940F,513bb4C5FE4D8207215A5BFD01220DF0C20080D204D0D20720D20910D20BE0D4C6!B}2E4360E8A0E440F6C0F6C0F440F48,9bb8A489848A904A23FA4CE8D0AD48E00D48C1AD08D09D4A9B88D0002A90C8D010268A868AA684048ADC8028D0A!C}D4,9dd8D1AD0AD2F028D00D4A9D48D0002A90C8D0102684048A9E08D0AD48D09D46840A5A2F013CE310E101FA9038D31,598dd0EA6BABD7802C90!D}FD007A9008D01D2F00AA9468D01D2A9DC8D00D260A6A31007A9008D03D2F00DBD3D0D8D02D2,648 ddA9A48D03D2C6A3A6A4100BA5A31014A9008D03D2!E}F00DBD450D8D02D2A9A48D03D2C6A460F0A050000F5FAFFFD2,192dd8C46002D73B9FFA6C81009A5A31004A5A430CF60BD680D8D02D2A9A68D03D2C6C!F}8600008101820282F373F47A6,785ddA51006A9008D05D260BD8A0D8D04D2A9AA8D05D2C6A56012396188B0D7FFA6A61005A5A530DD60BDA80D8D04D2!G},169(ddA98C8D05D2C6A660F4E8DCD1C5BAAEA2978B8074685D51463A2E23170C00A6DE1011A93020E50DA5A61007A5A5,5702dd10034C760D60BDE!H}C0D8D04D2A98A8D05D2C6DEAD0AD229708D360E8D370E6000FDF9F5F1EDEAE6E2DEDAD6D3CF,816<ddCBC7C3BFBCB8B4B0ACA8A5A19D9995918E8A8682!I}7E7B77736F6B6764605C5854504D4945413D3936322E2A2622,156Fdd1F1B17130F0B0804783C0000000000303030303030C61C0F44B00E74000074000!J}0740000740000740000740000,957Pdd740000740000740000740000740000740000740000740000740000740000740000740000740000540000C4B00E!K},935Zdd00C4E00E200641360E7070707070471C0F707046300F70476C0F7046580F7047440F70707046800F7046080F41,247ddd8A0E01010101010!L}101010101010101010101010101010101010101010101010101010101010101010101010101,442ndd0101010101000000000000000000000000000000!M}00000000000000000000000000000000000000000000000000,447xdd404040404040406C766C5A808080A2B5A7B39A800000000000006669726500627!N}5670000000000000000000000,414dd3732293434252E00223900000000000000000000B4AFAD00A8B5A4B3AFAE000000000000000000000000000006!O},413dd0000000000000000000000000000EBF9ECE500F0E5E1E3EFE3EB000000000000616E616C6F6700636F6D707574,274dd696E670000A00DA!P}9138DC60FA5C00AAABDC80FC9FFD002A200BDC70F1865C199360EBDC80F690099370EE8E898,365cc186903A8CEC60F10DA6000002080200021802100!Q}22802200238023002480240025802500268026002780270028,46dd802800298029002A802A002B802B002C802C002D802D002E802E002F802F003080!R}300031803100328032003380,583dd33003480340035803500368036003780370038803800398039003A803A003B803B003C803C003D803D003E803E,!S}296dd003F803FFFFFA9048589A20D86DDA6DDBDC51385888A0A0A0AAAA000BDD3139188E8C8C008D0F5C6DD10E3A900,208dd85BA85A185A085C3!T}A202959A959DCA10F9A90185C485D0A95485C5A92B85C6A90385CF85D1A20486E3A5BB85BC,702dd85BDBD261395E8CA10F8A93E8D2F02A9008D07D4A!U}9038D1DD0A9218D6F02A9F08D0CD0A9288D06D0A9CC8D07D0,136ddA900AA9D0003E0C9B00BE0309007A9F09D0003A900CAD0EB201013A20186BF8EFC!V}02CACA86A386A486A586A686,736ddDE86C8A5C385C1A5C485C0A90085A7A203A9FF95B1CA10F9A213A9149DEA0ECA10FAA91D85B9A2008A0AA8B9C7,!W}136cc0F8580B9C80F8581C9FFF013A07FA90420431418690291808810F3E84C1F11A200A000BD3513996F14E8C8C006,20ccD0F4AD6F1485CBAD7!X}01485CC205714A000989180AD6F14CD7114D008AC7014CC7214F014186D73148D6F14AD70,63dd14186D74148D70144C5311E02490B8A6BCE00B9002A!Y}20ABD2A1385DCAAA93A2043141869030AA8B9C70F85809D,542dd9605B9C80F85819DFA05A9732043141869060901A8B180F0D7C90FF0D3A90F918018!Z}6901C891808898187D9605,566dd9D9605A9FF9D5E06CA10B8A200BDC80FC9FFF0158581BDC70F8580A001989180A07F9180E8E84CE511CACABDC7,89![}4"dd0F8580BDC80F8581ADC70F8586ADC80F8587A07FA901918091868810F920A71A20D21A20DD1AA21DA9009D1E05,880,ddCA10FAA203A9019D1E!\}05A9FF9D3C05BD97139D7805858FBD9B139D5A05858EA9089D0005A000918EC818690191,5896cc80CA10D4A90085D8A5BC38E9014A4A4A85E5A90338E!]}5E585E7AABDC11385E585D485E6A6E7BDB9138588BDBD13,39@dd8589A20CA588187D9F13858EA4E699C206A5897DAC13858F99F606A901992A07A000A!^}90C918EC8186901918EC6,247JddE6CA10D3C6E710C1A9208599858FA9838598858EA906A000918EC8186901918E20E112A90085BF60AD0AD229F0,944!_}Tdd090285CEA204AD0AD229F01D21139DC402CA10F2ADC5028DC2028DC30260A514186946C514D0FC4CE2102065E4,913^ddA207A9009D00D2CA10F!`}A8D08D260080A080400000405060709131D27313B454F59633F0C3F1F0001400C401F00,474hdd013F213F34000140214034000129203E200100412056!a}200100800280FEFF0000FF010001010101010000000000,313rdd01000100000000E00040404040FF00FF00FF00FF00FF00000000FFFFFFFFFFFFFF01F!b}FFFFF03FF0200FF2E3030,278|dd31BF3945BF008080FE02827E7E8204FC00000000FFFF00FF00FF0000FFFF011F5F1F5F283838280C1926330008,224!c}dd10182028707880A0A8B0B8C00000000000000000AAAAFFFFFFFFAAAA1001000440000140001001400400110040,592dd0100044001001010010!d}040011000040000000000000000010401020B2F2F0A40100580E0F8F8A0FF6666666666,761dd66FFFF646464646464FFFF606060606060FFFF404040!e}404040FFFF000000000000FFF0108D5614AD0AD2CD5614,925dd90054A4A4C4B1460008E5614A5CC0AAABDC70F1865CB8580BDC80F8581AE561460000!f}000000000A599CD590EB0,122dd04A900F007CD680E900AA9018D6E15A2048E7015AD7015F041AD6E15D018C6A11038A5C0C5C4D005E6A14CD014,138!g}ddA90785A1C6C04CCA14E6A1A5A1C908901CA5C0C5C6D005C6A14CD014A90085A1E6C0CE70154CD514A9008D7015,998ddA5A18D05D4AD580E297!q}BJDOS SYSBNALTCUR BASBUALTCUR ASMBJeCLIMBER BASBMINICOM1BASB!MINICOM2BASBMINICOM3BASBHPMCREATEBASBd FIREBUG BASBFIREBUG1ASMBCFIREBUG2ASMF8D6D15A598297F38ED6D15C91E9004A900F006C90FB00AA9018D6F15A90C8D7115AD71,685dd15F041AD6F15F01CE6A0A5A0C9049034A5C1C5C3D005!r}C6A04C4115A90085A0C6C14C3B15C6A0101CA5C1C5C5D0,554dd05E6A04C4115A90385A0E6C1CE71154C4615A9008D7115A5A08D04D4A6BABC7802C00!s}FF00ACC6215F005B95E15,619dd85E88C62156000030101000200020003000000000000A5C78DDD15AEDD15B4E8B5EDD9E1159005B9E01595EDD9,989!t}ccE01590F60AA8B9F315858AB9F415858BADDD150AA8B9E915858CB9EA15858DA00FB18A918C8810F9CEDD1510C1,96ddCEDE151010A5CF8DDE15!u}A6BABD7802C90FF002E6EDCEDF15100CA5D18DDF15A6C7F6EDCAD0FB60000303000408,781dd0C10151F2528300440045004600490044316531663165!v}3167316831693168316A316B316C316B316D316E316F3,951dd16E3160317131723173317431753176317731783179317A3179317831773176317B317!w}C317D317E317D317C317,328ddF317031813180C0209C235CA3502308060835CA35C8003020902F50AF502C08060805FA05F800C02090235CA35,942!x}ddC2308060805CA35C830C3319999919330CC0002398982300C033331999991933330000209B9B200000CC331999,621&dd991933CC000023989823!y}00000300C82626C8000330CC64666664CC30000008E6E6080000CCCC64666664CCCC00,5140dd00C82626C8000033CC64666664CC330235CA35C209020!z}C805CA35C8360803002F50AF502090203805FA05F8060,529:dd80C0C235CA350209020C835CA35C80608030300C02090932C00000038C606080300C00!{}F00E09090E30300C0CB0,681Ddd6060B00F000000F20909020C0C30308060608F000003000239C902030000C080636C8000C00C03020939C20000,301!|}Ndd0000836C6080C030000000010108A020080A204040000000000000010128080000202840400000000000000109,644Xdd02000000008060400000!}}00000002090100000000000040608000000008280101000000000000404028200020A0,676bdd0801010000000000004040200A08000000ABAB0000000!~}00000EAEA00000000000E28280E00000000B02828B000,214ldd000032020808023200008C802020808C00C2020200000202C283808000008080830000!}00020200000000000080,236vdd8000000000000104040100000000401010400000000300303000030000C0000C0C00C0002029184C7E18C6D0D0,981!}dd50A90385D0A6BABD10D0D045B5A7C905B03FADEA0EC918F038A203B5B1C9FFF006CA10F74C7D18E6A7A59895A9,298ddA59995ADA5E895B1A914!}95B5A90685A5A6B9FEE00EBDE00EC918D008A5B9C90AF002C6B960A203B5B1C9FFD003,836dd4C0419B5A98584B5AD8585A000B184C912F004C911D00!}7A90E9184C89184B5B11009A9FF95B1C6A74C0419A8B5,430ddA9187914198584B5AD7918198585A000B184297FF026C90EF02248A98095B168C901F0!}2DC90FF029C90CF02520,553dd0B19A9119184C89184A91585A6D015A9129184C81869019184200B19D6B51004A901D0C9CA30034C801860A584,254!}dd95A9A58595AD608002FE80FF00FF00A90085DAA94285DEA91185DBA5DAC90D900738E90DA00084DBAAA590187D,147dd9F138592A5917DAC1385!}93A000A5DB9192C89192205A19E6DAA5DAC91AD0CB60A203A0FF88D0FDCAD0F860A6DC,865ddBD5E06C9FFD04CBD96058594BDFA058595A000B194C90!}FF016C90CD007A9809D5E06D02FA90F9194A910C89194,600ddD01FA003A594187959138596A595795D13859784C2A000B196C912F004C906D00AA93C!}9D5E06CA10AA3008A4C2,671bb8830F64C9819A6DCBD5E063044BD96058590BDFA058591A000B190D004A90FD004A98051909190C81869019190,7!}ddA9008D06D2A9888D07D2DE5E06D015A9008D07D2A9809D5E0686DD84C2201C19A6DDA4C2CA10B460A6E586E6BD,781dd2A07D0034C721ABDC20685!}88BDF6068589A000B188C90CF015C6D4300CA9009D2A07A90985C84C721A68684C82,559dd09A90385D2AD0AD22903A8BDC20618795913858EBDF6067!}95D13858FA000B18EF00CC90EF008C6D210DBCA10A3,773dd60A90E9188C8918888A90C918EC8186901918EA58E9DC206A58F9DF6064C721AA000F818!}A202B59A759D959A94,288 dd9DCA10F5D8A91085E1A200A000B99A0020BD1AE8E8C8C003D0F36085E2290F05E19D090FA5E24A4A4A4A05E19D,881!}dd080F60A05084E1A5BDA20B4CBD1AA5E3300509908D1B0F60000000000000000000000000000000000000000000,292D2:FIREBUG.BAS81 xgXEIX;X; *************************X; * FIREBUG *X; * by Kyle Peacock *X; * & To%}m Hudson *X; * ANALOG Computing *X; * All Rights Reserved * X; ************************* X; X; Redefi%}ned Characters by X; Jon Bell -- 6/26/84 X;X; CONSTANTSX;GAMESET;;CHARACTER SETPLAYBS;;P/M BASE A%}DDR.SCREENBASE ;;BOARD RAM.MISSPLAYBS;;MISSILEs BOMBX;X; ZERO PAGE USAGEX;LO ;;%}2-BYTE POINTERS BMB ZLO ;;Z-PAGE POINTER.LOW ;;Z-PGAE POINTER. HLO DRWLO ;;CHAR DATA PN%}TR.PLLO ;;CHAR WORK PNTR. ADL ! ELO " ELO2 # BLO $ BLO2 %BUGL ;;FIREBUG X & Y.&%}SCORE ;;BCD SCORE VALUE' SCOADD ;;SCORE ADD VALUE(HBIT ;;HSCROL RAM COPY)VBIT ;;VSCROL RAM COPY*%}DIGGIN ;;DIGGING FLAG+!CHANGE1 ;;MATING SOUND 1.,!CHANGE2 ;;MATING SOUND 2.- BULLNOISE ;;BULLET NOISE.%} BOOMNOISE ;;BULLET NOISE/NOBULL ;;SPARKS FIRED.0BULLX ;;SPARK X-COORD.1BULLY ;;SPARK Y-COORD.2%}BULLDIR ;;SPARK DIRECT.3BULLTIME ;;SPARK LIFE4 BULLPNT ;;BAR LINE PNTR.5PLAYNO ;;PLAYER UP.6"STARTL%}EVEL ;;STARTING LVL.7LEVEL ;;CURRENT LEVEL8BCDLVL ;;BCD LEVEL #9TIMER ;;GENERAL TIMER:VSTOP ;%};HALT FLAG.;YPOINT ;;BOARD Y-COORD.<XPOINT ;;BOARD X-COORD.=YTEMP ;;Y-REG TEMP HOLD>MINX ;;MIN X %}VALUE?MINY ;;MIN Y VALUE@MAXX ;;MAX X VALUEAMAXY ;;MAX Y VALUEBMAXBUGS ;;# OF CHARsCEATNOISE %};;EATING SOUNDDGENTIM ;;MATING TIMEREGENCTR ;;MATING COUNTERFXCOORD ;;X COORDINATEGYCOORD ;;Y %}COORDINATEH LISTPOINT ;;D-LIST PNTR.I NEWBACK ;;BOARD B-COLOR.J"MOVETIME ;;MOVEMENT TIMER.K FIRETIME %};;FIRING TIMER.L PHASETIME ;;PHASE TIMER.M ETRY NOLDVAL ;;OLD CHAROEGGS ;;BABY COUNTPENIX ;;%}ENEMY INDEXQ GNEWIX ;;GENERATION INDXRNEWTYP ;;NEW ENEMY TYPESGENFLG ;;MATING FLAGTBUGTIM ;;BUG TI%}MERUEXPPH ;;EXPLOSION PHASEV EXPCHR ;;EXPL. CHARACTERWBOMBCT ;;# OF BOMBSXXTEMP ;;X SAVE AREAY!E%}XNOISE ;;EXPLOSION SOUNDZARMTIM ;;BOMB ARM TIMER[BULTIM ;;BULLET TIMER\SHCOLR ;;TEXT COLOR]SHOBYT%} ;;TEXT CHAR^LIVES ;;# OF BUGS LEFT_ECOUNT ;;# OF BABIES`EGGTOT ;;# OF EGGSaEGGIX ;;BABY INDE%}XbEGROUP ;;BABY GROUP #cTYPE ;;CHAR. TYPE.dPHASE ;;CHAR. PHASE.eX;fX; RAM USAGEgX;hiETYP%} ;;ENEMY TYPEjEACT ;;ENEMY ACTIVEkEDIR ;;ENEMY DIRECTIONlEADL ;;ENEMY ADDR LOmEADH ;;ENEMY ADD%}R HInBOMBL d;;BOMB ADDR LOoBOMBH d;;BOMB ADDR HIpARMED d;;BOMB ARMED FLAGqEGGL 4;;BABY ADDR LOrEGG%}H 4;;BABY ADDR HIsEGGACT 4;;BABY ACTIVEtX; **********************uX; * MASTER EQUATE FILE *vX; ***************%}*******wX;xX; I/O RoutinesyX;zDSKINVS{SIOINVe|X;}X; Operating System Equates~X; CASINI DOSVE%}C DOSINI ATRACTM POKMSK BRKKEY RTCLOKVDSLSTVIMIRQCDTMV1CDTMV2%}CDTMV3CDTMV4CDTMV5 CDTMA1&CDTMA2(CDTMF3*CDTMF4,CDTMF5.SRTIMR+%}SDMCTL/SDLSTL0SDLSTH1SSKCTL2 LPENH4 LPENV5GPRIORoPADDL0pSTICK0x%}STICK1ySTRIG0 SHFLKPCOLR0COLOR0COLOR1COLOR2COLOR3COLOR4%} MEMLO CHART CHBAS CHDDEVIC DUNITDCOMNDDSTATSDBUFLODBU%}FHIDTIMLODBYTLODBYTHI  DAUX1  DAUX2  ICCOMB ICBALD ICBAHE ICBLL%}H ICBLHI ICAX1J ICAX2K CIOVV SIOVeSETVBV\SYSVBV_XITVBVbOSRETNt %}CLICKX;X; Hardware RegistersX;HPOSP0HPOSP1HPOSP2HPOSP3 M0PF M1PF%} M2PF M3PFHPOSM0HPOSM1HPOSM2HPOSM3 P0PF P1PF P2PF P3PF%} M0PL M1PL M2PL M3PL P0PL P1PL P2PL P3PLSIZEP0SIZEP1 %}SIZEP2 SIZEP3 SIZEM GRAFP0 GRAFP1GRAFP2GRAFP3 TRIG0 GRAFM%}COLPM0COLPM1COLPM2COLPM3COLPF0COLPF1COLPF2COLPF3 COLBK%} PRIORVDELAYGRACTLHITCLRCONSOL POT0 AUDF1 AUDF2 AUDF3 AUD%}F4 AUDC1 AUDC2 AUDC3 AUDC4AUDCTLALLPOTKBCODE STIMER RANDOM%}  SERIN SKREST  POTGO SEROUT  IRQEN  IRQST  SKCTL SKSTAT  PORTA %}DMACTLCHACTLDLISTLDLISTHHSCROLVSCROLPMBASECHBASE  WSYNC %}VCOUNT  PENH  PENV  NMIENNMIRES NMISTX;;;prog startX;#X; **************%}*************** #X; * FIREBUG IGNITION *!#X; * Tom Hudson & Kyle Peacock *"#X; *****************************#X;%}$%X;& BICFLICK'Q>$;;RELOCATE PROG(PHLO;;TO $0800)Q>;;FROM $2400*PLO;;(DISK ONLY)+Q>,PHLO-P%}LO.RELOC1%>/RELOC2Q@HLO70 P@LO7112 HRELOC23 #LO4 #HLO5 QHLO6R>87 HRELOC18 !DIGIN9 DIG%}IN:Q>";;TURN ON...;PSDMCTL;;SCREEN<Q>;;NUMBER OF CHARs=PMAXBUGS;;TO MANIPULATE.>Q>;;STARTING LEVEL?PSTART%}LEVEL;;IS ONE.@ IGNITEAQ>;;SET UP.BPLISTPOINT;;DISPLAY LIST.CPHPOSM2;;PLACE BORDERSDPHPOSM3;;OFFSCREEN.EPVS%}TOP;;HALT VBLANK.F SOUNDOFF;;SOUNDS OFF.GQ>;;SET ACC.H$>VBLANK;;HI ADDR.I%>VBLANK;;LO ADDR.J SETVBV;;V%}BLANK INIT.KQ>;;SET ACC.L$>DBLANK;;HI ADDRM%>DBLANK;;LO ADDR.N SETVBV;;DBLANK INIT.OQ>;;SET ACC.PP%}NMIEN;;ENABLE DLIsQ ?NOPRESSRQCONSOL;;GET CONSOLE.SR>;;UNTOUCHED?TF?PRESS;;IF =0 BRANCH!UP?PREV;;SAVE CONSOLE.%}V!?NOPRESS;;JUMP ON IT!W ?PRESSXQ?PREV;;PREV. CONSOLE.YR>;;START PRESSED?ZF?VAROOM;;IF =6 BRANCH![QSKSTAT;;%}KEYBOARD KEY\M>;;STILL PRESSED?]F?NOPRESS;;IF =0 BRANCH!^QCH;;GET CHARACTER._$>;;SET INDEX-X.` ?NUMCOMPaR?%}NUMBASE9;;IS CHAR A #?bF?GOTANUM;;YES! BRANCH!c0;;NO. RESET PNTR.dI?NUMCOMP;;HANDLE ALL.eG?NOPRESS;;NO #s PRESSED.%}f ?GOTANUMg&STARTLEVEL;;SAVE START-h#STARTLEVEL;;ING LEVEL #.i &BCDLVLj #BCDLVLk SHOLVLl SETCOLORSmQ>;;%}RESET KEYBOARDnPCH;;CHARACTER.o!?NOPRESS;;JUMP ON IT.p ?VAROOMqQ>rP?PREV;;RESET PREVIOUS.s INIT;;INITIALIZE%}t NEWLVLuQ>;;CLEAR.vPVSTOP;;START VBLANK.wPLISTPOINT;;SET DISPLAY.x MAINLNyX;zX; GAME PAUSED?{X;|QCONS%}OL;;CONSOLE BUTTON.}R>;;UNTOUCHED?~F?PCHECK;;YES. BRANCH!!IGNITE;;RESTART ALL!!! ?PCHECKQCH;;IS KEYBOARD%}R>!;;SPACEBAR?H?PAUSE;;IF NOT, BRANCH!QSKSTAT;;STILL HOLDINGM>;;DOWN KEY?F?PAUSE;;IF YES, BRANCH!Q>%}PVSTOP;;HALT VBLANK.PCH;;CLEAR CHAR. SOUNDOFF;;SOUNDS OFF. ?WAITQCH;;IF SPACEBARR>!;;PRESSED?H?WAIT;;%}NO. BRANCH! ?WAITMOREQSKSTAT;;IS SPACEBARM>;;STILL HELD?F?WAITMORE;;YES, BRANCH!Q>;;CLEARPVSTOP;;STA%}RT VBLANK.PCH;;RESET CHAR. ?PAUSEQARMTIM;;TIMER ELAPSED?HCHKBUL;;NO! BRANCH!Q>;;RESET TIMER. PARMTIM%} ARMBOM;;SUBROUTINE. CHKBULQBULTIM;;TIMER ELAPSED?HCHKBUG;;NO! BRANCH!Q>;;RESET TIMER. PBULTIM SPARK%};;SUBROUTINE.CHKBUGQBUGTIM;;TIMER UP?HNOFBMV;;NO! BRANCH! MOVBUG;;SUBROUTINE.QDIGGIN;;RESET TIMER F?EIGHT%}Q> ;;DIGGING. H?GOTSPD ?EIGHTQ>;;NOT DIGGING. ?GOTSPDPBUGTIM;;SAVE TIMER. NOFBMVQGENFLG;;MATING %}SEASON?FNOGTST;;YES!QGENCTR;;SECOND ELAPSED?HNOGTST;;NO!Q><;;SET TIMER TOPGENCTR;;1 SECOND"GENTIM;;1 %}LESS SECONDHNOGTST;;NOT ZERO!Q>;;TIME TO STARTPGENFLG;;MATING SEASON! NOGTSTQTIMER;;TIMER ELAPSED?FDO%}ENMY;;YES, DO ENEMIES!MAINLN;;NO! BRANCH!DOENMYQLEVEL;;RESET ENEMYV?;;BUG MOVEMENTR>;;TIMER ACCORDINGD?G%}OTNEW;;TO LEVEL OFQ>;;GAME. ?GOTNEW>;;[LEVEL 30 MAX.] QENSPEED9PTIMER;;SAVE TIMER. ENMOVE;;MOVE ENEMIES%} BMOVE;;MOVE BABIESQECOUNT;;ANY ENEMIES?HGAMECONT;;YES!#LEVEL;;NO ENEMIES,<;;ADVANCE LEVEL QBCDLVL,%}O> PBCDLVL-;;HERE TOM?!? SHOLVL;;SHOW NEW LEVEL INIT3;;RE-INIT!NEWLVL;;AND PLAY! GAMECONT!MAINLN%};;LOOP BACK! ENSPEED ===== = = = = =  === ?NUMBASE ==== =3=5=0%} ?PREV X;#X; *****************************#X; * FIREBUG DEATH/ENEMY MOVER *#X; * BY Tom Hudson *#%}X; *****************************X;X;FIREBUG DEATHX;DEADQBUGL;;SET EXPLOSIONPELO;;POSITION = TOQBUGL;%};BUG'S LASTPELO;;POSITION EXPLOD;;BOOM!!!"LIVES;;1 LESS LIFEGGAMOVR;;GAME OVER IF <0 SHOLIV;;SHOW LIVE%}S INIT3;;RE-INIT LEVEL!NEWLVL;;AND RESTART!X;X;GAME OVER!X; GAMOVR INIT3;;RE-INIT!IGNITE;;AND SHO%}W TITLEX;X;ENEMY MOVERX;ENMOVEQ>;;ZERO...PECOUNT;;ENEMY COUNT$>;;30 ENEMIES MAXENLP&ENIX;;SAVE I%}NDEXQEACT9;;ACTIVE?HACTIVE;;YES!!NXTEN;;NO, NEXT ENEMYACTIVEQEADL9;;GET...PADL;;ENEMY'S...QEADH9;;AD%}DRESS...PADL;;IN POINTER%>;;GET THE CHAR...Q@ADL7;;FROM DISPLAYRETYP9;;ENEMY OK?FENMYOK;;YES!Q>;%};UH-OH, HE'S NOPEACT9;;LONGER ACTIVE! Q> ;;GET ENEMY'S ;;;SCORE VALUE  SETYP9 M> T?T?T?;;AND PUT IN...%}PSCOADD;;ADD VALUE ADDSCO;;ADD TO SCORE!NXTEN;;NEXT ENEMY!ENMYOKQ>;;RESET MOVEMENTPOK;;TO CHARS 8%}POK ;;AND 10QGENFLG;;MATING SEASON?HGENDUN;;NO!Q>;;SET...%ETYP9;;ENEMY TYPE'S...POK8;;OK FLAGX;%}X;PRIORITY MOVE CHECKX;GENDUNQ>;;TRY 4 DIRS.PGNEWIX;;SAVE IN INDEX PRILP%GNEWIX;;GET INDEX!QEADL9;;ADD%}...",;;DIRECTION...#ODIRADL8;;OFFSET...$PADL;;TO...%QEADH9;;ENEMY'S...&ODIRADH8;;ADDRESS' PADL(%>;;LOA%}D THE BYTE..)Q@ADL7;;IN THAT DIR.*M>;;MASK HI BIT+POLDVAL;;SAVE OLD VALUE,?;;CHAR # IN Y-QOK8;;CAN WE GO THERE%}?.FNOPRI;;NO!/QCHANCE8;;GET CHANCE0R>;;100% CHANCE?1HNOPRI;;NO!2QGNEWIX;;GET DIRECTION,3PEDIR9;;SAVE DIREC%}TION,4 EXMOVE;;MOVE ENEMY!5!NXTEN;;NEXT ENEMY6!NOPRI"GNEWIX;;NEXT DIRECTION7IPRILP;;KEEP CHECKIN'8X;9#X;NO PRI%}ORITY MOVE, SO LET'S TRY:X;A RANDOM DIRECTION!;X;<ETRYLPQ>;;TRY 5 DIRS.=PETRY;;SAVE INDEX>GETDIRQEDIR9;;GET O%}LD DIR.?ISETDIR;;IT'S MOVING!@QRANDOM;;RANDOMIZE AAM>;;DIRECTIONBSETDIRPEDIR9;;SAVE DIR.C DIRCHK;;IS THAT DI%}R OK?DINXTEN;;YES!E"ETRY;;NEXT DIR.FIGETDIR;;AND LOOP BACKGQ>;;DIDN'T MOVE!H PEDIR9I NXTEN$ENIX;;GET ENEMY %}INDEXJQEACT9;;ACTIVE?KFEDEAD;;NO!L#ECOUNT;;1 MORE ENEMYMEDEAD0;;NEXT ENEMYNGENDONE;;IF <0, FINISHEDO!ENLP;;%}LOOP BACK.PENDONE:;;ALL DONE!QX;RX;DIRECTION CHECK SUBROUTINESX;TDIRCHK?;;MOVE DIR. TO YUQEADL9;;NOW ADD...V%},;;DIRECTION...WODIRADL8;;OFFSET...XPADL;;TO ENEMY'S...YQEADH9;;POSITIONZ ODIRADH8[ PADL\%>;;GET THE BYTE%}...]Q@ADL7;;FROM DISPLAY^M>;;MASK HI BIT_POLDVAL;;SAVE OLD CHAR`?;;GET CHAR IN YaQOK8;;CAN ENEMY MOVE?bHOKM%}OVE;;YES!cNOMOVEQ>;;NO!d :;;RETURNeOKMOVEQCHANCE8;;GET CHANCEfRRANDOM;;MOVE OK?gDNOMOVE;;NO!hEXMOVEQEADL9%};;GET ENEMY'SiPHLO;;OLD ADDRESSj QEADH9k PHLOlQ>;;ERASE OLD...m?;;ENEMY IMAGEn P@HLO7o3p P@HLO7q1rQ%}ETYP9;;GET ENEMY CHAR,sP@ADL7;;PUT ON SCREENt3u,vO>w P@ADL7xQADL;;UPDATE ENEMY...yPEADL9;;ADDRESS TABLEz%} QADL{ PEADH9|QOLDVAL;;GET OLD CHAR}RETYP9;;SAME AS ENEMY?~FGENIT;;YES, GENERATE!!!NOGEN;;NO, DON'T GEN.%}GENITQ>;;ENEMY NOT...PEACT9;;ACTIVE ANYMOREX;X;THIS CODE GENERATES A NEWX;GROUP OF ENEMY OBJECTSX;QET%}YP9;;GET ENEMY TYPER>;;TYPE 8?HTYP10;;NO, TYPE 10!Q>;;TURN ON...PCHANGE1;;CHANGE SOUND 1Q> ;;GEN TYPE 1%}0HGNEW;;GENERATE 'EM!TYP10Q>;;TURN ON...PCHANGE2;;CHANGE SOUND 2Q>;;GEN TYPE 8GNEWPNEWTYP;;SAVE NEW T%}YPEQ>;;GEN. 4 ENEMIESPGNEWIX;;SAVE IN INDEXGNEWLP%GNEWIX;;GET INDEXQADL;;GET ENEMY ADDR, ,;;ADD...ODI%}RADL8;;DIRECTION...PHLO;;ADDRESS...QADL;;OFFSET ODIRADH8 PHLO%>;;GET THE CHAR...Q@HLO7;;FROM DIS%}PLAYM>;;MASK HI BITR>;;BORDER?FNONEW;;CAN'T GEN IT!R>;;FIREBUG?FKILL;;KILL HIM!R>;;ENEMY TYPE 8?%}FNONEW;;CAN'T GEN!R> ;;ENEMY TYPE 10?FNONEW;;CAN'T GEN!R> ;;BABY BUG?FKILL;;KILL IT!R>;;BOMB?FNON%}EW;;CAN'T GENERATE$>;;SCAN FOR...!SCANEWQEACT9;;INACTIVE ENEMYFGOTNEW;;GOT ONE!0;;TRY NEXT SLOTISCANEW;;K%}EEP TRYINGQ>;;NONE AVAILABLE!PGENFLG;;MATING OVERQ>d;;WAIT 100...PGENTIM;;SECONDS.!MOVEOK;;PROCEEDGO%}TNEWQ>;;SET ENEMY AS...PEACT9;;ACTIVEQ>;;SET UP FOR...PEDIR9;;NO DIRECTIONQHLO;;SAVE ENEMY...PEADL9;;A%}DDRESS QHLO PEADH9QNEWTYP;;GET NEW TYPEPETYP9;;SAVE IN TABLEP@HLO7;;PUT ENEMY...,;;ON SCREEN!O>%}3 P@HLO7NONEW"GNEWIX;;NEXT GEN.GMOVEOK;;ALL DONE!!GNEWLP;;LOOP IF MOREMOVEOKQ>;;STATUS=0 (OK) :;;RE%}TURN!NOGENR>;;HIT FIREBUG?HMOVEOK;;NO, MOVE OK.KILL7;;REMOVE... 7;;OLD...7;;STACK...7;;ENTRIES,!DEA%}D;;KILL BUG!!!X;"X; ****************************"X; * FIREBUG MOVEMENT ROUTINE *"X; * BY Tom Hudson *"X%}; ****************************X;!MOVBUGQBUGL;;GET AND SAVE...PHLO;;FIREBUG ADDRESS QBUGL PHLO%>;;%}GET THAT...Q@HLO7;;DISPLAY BYTER>;;BUG OK?FBUGLIV;;YUP!HKILBUG;;UH-OH! KILL HIM BUGLIV$STICK0;;GET ST%}ICK%SDIR9;;AND DIRECTIONITRYBMV;;TRY TO MOVENOBMV:;;NO MOVE!TRYBMVQBUGL;;ADD...,;;DIRECTION...ODIRADL%}8;;OFFSET...PADL;;TO...QBUGL;;BUG'S...ODIRADH8;;ADDRESS PADL%>;;GET THAT...Q@ADL7;;DISPLAY BYTE&}R>;;BORDER?FNOBMV;;CAN'T GO THERE!R> ;;BABY?FNOBMV;;CAN'T GO THERE!R>;;BOMB?ENOBMV;;CAN'T GO THERE!&}R>;;DIRT/TRAIL?DOKBMV;;GO AHEAD!R>;;BUG TRAIL?FOKBMV;;GO AHEAD!KILBUG7;;MUST BE ENEMY!7;;CLEAR STACK&},!DEAD;;KILL BUG!OKBMVR>;;ENEMY TRAIL?FNOTDIG;;NO DIGGING!R>;;BUG TRAIL?FNOTDIG;;NO DIGGING!Q>;;S&}ET DIGGING...PDIGGIN;;SOUND FLAGHDRWBUG;;AND DRAW BUGNOTDIGQ>;;TURN OFF...PDIGGIN;;DIGGING SOUNDDRWBUGQ&}>;;ERASE BUG...P@HLO7;;WITH BUG TRAIL3 P@HLO71Q>;;DRAW BUG...P@ADL7;;IN NEW... 3;;LOCATION , O>&}  P@ADL7 QADL;;UPDATE BUG'SPBUGL;;ADDRESS QADL PBUGL:;;ALL DONE!$X; *****************************&}*$X; * FIREBUG INTERRUPTS & SOUND *$X; * BY Kyle Peacock *$X; ******************************X;X;&} VBLANK-;;CHILL DECIMAL.X;X; RANDOMIZE DETONATIONX;$>;;CHANGE 8 BYTES. ?JUNKIT QRANDOM;;RANDOM #!M>&}U;;MASK FOR PF#0."PGAMESET 9;;SAVE.#0;;HANDLE NEXT.$I?JUNKIT;;NOT DONE-BRANCH%X;&!X; SET UP CORRECT DISPLA& }Y LIST'X;(QLISTPOINT;;D-LIST PNTR.)T?;;MULTIPLY BY 2.*>;;MOVE A TO X.+Q?DLISTBASE9;;LET'S,PSDLSTL;;PAINT THE-& }Q?DLISTBASE9;;GANG-.PSDLSTL;;GREEN, & EAT/Q>GAMEDLI1;;FRANKS &0PVDSLST;;BEANS.1Q>GAMEDLI1;;C.B.I. & }IS2PVDSLST;;ON THE MOVE.3X;4X; CHANGE TITLE SCREEN5X;6"?SWITCHTIME;;DEC TIMER.7I?SWITCHDONE;;>0 BRANCH!8Q& }RANDOM;;RANDOM #9M>?;;MASK BITS 7 & 6:L>;;ADD BITS 0-3.;P?SWITCHTIME;;SAVE TIMER.<#?FLOPFLIP;;INC NAME=Q?FLO& }PFLIP;;TOGGLE FLAG.>M>;;EXAMINE BIT 0.?T?;;MULTIPLY BY 2.@T?;;MULTIPLY BY 4.A>;;MOVE A TO X.BQ?SWITCHBASE9;;GET &}ADDRCPSWITCH1;;OF NAME DATADQ?SWITCHBASE9;;ANDEPSWITCH1;;PLACE INTOFQ?SWITCHBASE9;;PROPERGPSWITCH2;;A&}REA OF DISPLAYHQ?SWITCHBASE9;;LIST.IPSWITCH2J?SWITCHDONEKX;LX; HALT ATTRACT MODE?MX;NQVSTOP;;VBLANK H&}ALTED?OH?VDONE;;YES!PPATRACT;;ATTRACT MODE.QX;RX; SPARK REGENERATIONSX;T"?REGEN;;TIME UP?UI?REGEND;;IF >0 B&}RANCH!VQSTICK0;;GET JOYSTICK.WR>;;CENTERED?XH?GENSET1;;NO! BRANCH!Y$>;;CLEAR INDEX.ZF?GENSET2;;BRANCH![ ?G&}ENSET1\$DIGGIN;;BUG IN DIRT?] ?GENSET2^!Q?GENSET9;;REGENERATION RATE._P?REGEN;;SAVE TIMER.`#?FLIPFLOP;;INC TOGGL&}EaQ?FLIPFLOP;;FLAG.bM>;;EXAMINE BIT 0.cF?REGEND;;IF EVEN-BRANCH!d$BULLPNT;;GET POINTER.eQBULLETLINE9;;DETERMI&}NEfR>;;IF WE SHOULDgH?BULLSET;;MODIFY THISh(>;;CHARACTER ORiF?REGEND;;MOVE TO NEXT.j#BULLPNT;;MOVE TO NEXTk&}2;;CHARACTER.l ?BULLSETm"BULLETLINE9;;MODIFY.n ?REGENDoX;p!X; DECREMENT COUNT DOWN TIMERSqX;r QGENCTRs F?NOG&}ENTt "GENCTRu ?NOGENTvQBULTIM;;TIMER = 0?wF?NOBUL;;YES. BRANCH!x"BULTIM;;NO. DECREMENT.y ?NOBULzQARMTIM;;TI&}MER = 0?{F?NOAT;;YES. BRANCH!|"ARMTIM;;NO. DECREMENT.} ?NOAT~QTIMER;;TIMER = 0?F?NOTIME;;YES. BRANCH!"TIME&}R;;NO. DECREMENT. ?NOTIMEQBUGTIM;;TIMER = 0?F?NOBTIM;;YES. BRANCH!"BUGTIM;;NO. DECREMENT. ?NOBTIMX; X;&} FINE SCROLLING (REVISITED)X; SCROLL ?VDONEX;X; UPDATE LMS POINTERSX; SHIFTERX;X; VERTICAL BLANK&} DONEX; !SYSVBVX;!X; ***************************!X; * DEFERRED VERTICAL BLANK *!X; ***************************&}X; DBLANK-;;CHILL DECIMALX;X; UPDATE CHARACTER SETX; DRAWQVSTOP;;DBLANK HALTED?H?DDONE;;IF <>0 &}BRANCH!X;X; DIGGING SOUNDX; DIGSOUNDX;X; BUG TRANSFORMATION SOUNDsX; TRANSFORMX;X; FIRE EGG E&}ATEN SOUNDX; CHOMPX;X; SPARK FIRING SOUNDX; POPGUNX;X; DETONATION SOUNDX; KABOOMX;X; B&}OMB DETONATION SOUNDX; BOOMBOXX;X; DEF. VERTICAL BLANK DONEX; ?DDONE !XITVBVX;X; POINTERS' DATABA&}SESX;?DLISTBASE GAMELIST TITLELIST?SWITCHBASE TITLE2 TITLE4 TITLE4 TITLE2X;X; ******& }**********X; * FIREBUG DLIs *X; ****************X; GAMEDLI15;;SAVE ACC.A;;MOVE X TO A.5;;SAVE ACC.C;;&!}MOVE Y TO A.5;;SAVE ACC.Q>GAMESET;;BUG CHRs$>?;;DMA CONTROL.%NEWBACK;;BACKGROUND.PWSYNC;;SAVE IT.&&"}DMACTL;;SAVE IT.'COLBK;;SAVE IT.PCHBASE;;SAVE IT.Q>GAMEDLI2;;LOAD UPPVDSLST;;FOR NEXT DLI.Q>GAMEDLI2&#};;SAVE NEXTPVDSLST;;DLI ADDRESS.7;;RESTORE ACC.?;;MOVE A TO Y.7;;RESTORE ACC.>;;MOVE A TO X.7;;RESTOR&$}E ACC.9;;BOGGIE BABY... GAMEDLI25;;SAVE ACC.QCOLOR4;;BACKGROUND.PWSYNC;;SAVE IT.PCOLBK;;SAVE IT.QSDM&%}CTL;;OLD DMA CONTROLPDMACTL;;IS RESTORED.Q>GAMEDLI3;;SET UPPVDSLST;;FOR NEXTQ>GAMEDLI3;;DLI ADDR.P&&}VDSLST;;SAVE IT.7;;RESTORE ACC.9;;BOGGIE BABY... GAMEDLI35;;SAVE ACC.Q>;;OLD CHR SET.PWSYNC;;SAVE IT.&'}PCHBASE;;SAVE IT.7;;RESTORE ACC.9;;BOGGIE BABY...X;X; DIGGING SOUND ROUTINEX; DIGSOUNDQDIGGIN;;BUG &(}IN DIRT?F?DIGOFF;;IF = 0 BRANCH!"?DIGTIME;;DEC TIMER.I?DIGDONE;;IF >0 BRANCH!Q>;;RESET DIGGINGP?DIGTIME;&)};TIMER.$PLAYNO;;PLAYER NUMBER.QSTICK09;;READ JOYSTICK.R>;;CENTERED?H?DIGON;;<> 15 - BRANCH! ?DIGOFFQ>&*};;CLEAR.PAUDC1;;SOUND CHANNEL. F?DIGDONE;;BRANCH!  ?DIGON Q>F;;SET UP PAUDC1;;SOUND CHANNEL 1 Q>;;SET UP&+}PAUDF1;;SOUND FREQ 1. ?DIGDONE:;;BEAM ME UP...X;X; BUG TRANSFORMATION SOUNDX; TRANSFORM$CHANGE1;;1st&,} SOUND ON?ITRAN1;;IF >0 BRANCH!Q>;;SOUND OFF.PAUDC2;;CHANNEL 2.FTRAN2;;BRANCH! TRAN1Q?CHANGE19;;GET C&-}ORRECTPAUDF2;;FREQ & SAVE.Q>;;SET UP CORRECTPAUDC2;;SOUND CHANNEL."CHANGE1;;DEC POINTER.  TRAN2!$CHANGE&.}2;;2nd SOUND ON?"ITRAN3;;IF >0 BRANCH!#QCHANGE1;;SOUND 1 OFF?$ITRAN4;;IF >0 BRANCH!% ?DEACT2&Q>;;SOUND OFF.'&/}PAUDC2;;CHANNEL 2.(FTRAN4;;BRANCH!) TRAN3*Q?CHANGE29;;GET CORRECT+PAUDF2;;FREQ & SAVE.,Q>;;SET UP CORRECT-P&0}AUDC2;;SOUND CHANNEL.."CHANGE2;;DEC POINTER./ TRAN40 :;;BAMF!1 ?CHANGE12 ==P=3 =_==4 ?CHANGE25&1} ==F=6 -=s==7X;8X; FIRE EGG EATEN SOUND9X;: CHOMP;$EATNOISE;;SOUND ON?<I?CHOMPON;;IF >0 BRANCH!=&2}QCHANGE1;;CHANGE 1 ON?>I?CHOMPOFF;;IF >0 BRANCH!?QCHANGE2;;CHANGE 2 ON?@G?DEACT2;;IF >0 BRANCH!A ?CHOMPOFFB:;&3};BOGGIE...C ?CHOMPONDQ?CHOMPF9;;GET SOUNDEPAUDF2;;FREQ & SAVE.FQ>;;SET CORRECTGPAUDC2;;SOUND CHANNEL.H"EATN&4}OISE;;DEC POINTER.I:;;LATER Y'ALL!J ?CHOMPFK ==== L (=/=7=?=GMX;NX; SPARK FIRING SOUNDOX;P POPG&5}UNQ$BULLNOISE;;SOUND ON?RI?SHOOTIT;;IF >0 BRANCH!S ?CHILLOUTTQ>;;CLEAR SOUNDUPAUDC3;;CHANNEL 3.V:;;LATER...W&6} ?SHOOTITXQ?SHOOTF9;;GET CORRECTYPAUDF3;;FREQ & SAVE.ZQ>;;SET UP CORRECT[PAUDC3;;SOUND CHANNEL.\"BULLNOISE;&7};DEC POINTER.] ?SHOTIT^:;;LATER..._ ?SHOOTF` =9=a=a ==bX;cX; DETONATION SOUNDdX;e KABOOMf$BO&8}OMNOISE;;SOUND ON?gI?BOOMIT;;IF >0 BRANCH!hQBULLNOISE;;BULLET ON?iG?CHILLOUT;;IF <0 BRANCH!j:;;LATER...k ?BOOMIT&9}lQ?BOOMF9;;GET CORRECTmPAUDF3;;FREQ & SAVE.nQ>;;GET CORRECToPAUDC3;;SOUND CHANNEL.p"BOOMNOISE;;DEC POINTER.q&:} ?BOOMEDr:;;LATER (MUCH!)s ?BOOMFt ===u ===v ===tw h=]=Q=F=:x .=#== =yX;z&;}X; BOMB DETONATION SOUND{X;| BOOMBOX}$EXNOISE;;SOUND ON?~I?ZAPON;;IF >0 BRANCH!Q>0;;ADJUST DISPLAY ?DSET;&<};LIST.QBOOMNOISE;;EXPLOSION?I?ZAPOFF;;IF >0 BRANCH!QBULLNOISE;;BULLET?I?ZAPOFF;;IF >0 BRANCH!!?CHILLOUT;;&=}CHILLY BE. ?ZAPOFF:;;CHILL OUT. ?ZAPONQEXF9;;GET CORRECTPAUDF3;;FREQ & SAVE.Q>;;GET CORRECTPAUDC3;;&>}SOUND CHANNEL."EXNOISE;;DEC POINTER.QRANDOM;;RANDOM #M>p;;MASK 4,5,6. ?DSETPGAMELIST;;SAVE INTO DIS-PG&?}AMELIST;;PLAY LIST.:;;CHILLY BE Y'ALLEXF ===== ====ڗ ====ǘ ====&@} ==== ==== ===~={ w=s=o=k=g d=`=\=X=T=P M=I=E=A===9=6 2=&A}.=*=&="== === == ?GENSET x=<?DIGTIME  ?REGEN ?FLIPFLOP ?FLOPFLIP ?SWI&B}TCHTIME == === == ?GENSET x=<?DIGTIME  ?REGEN ?FLIPFLOP ?FLOPFLIP ?SWI$ CX; *************************X; * FIREBUG DISPLAY LISTS *X; * BY Kyle Peacock *X; ***********************D}***X;X;X; GAME BOARD DISPLAY LISTX; GAMELIST 0=0=0 0=0=0 Ƶ STATUSLINE D BLANKL*E}INE t== t== t== t== t== t== t==DLISTSTART t== t==*F} t== t== t== DLISTEND t== t== t== t== t== t== *G}t== T==  BLANKLINE = BULLETLINE  ==A GAMELISTX;X; TITLE SCREEN DISPLAY LIST*H}X; TITLELIST p=p=p=p=p G STATUSLINE p=p=F TITLE1 p=G SWITCH1 TITLE4 p=F T*I}ITLE3 p=G SWITCH2 TITLE2 p=p=p=F TITLE5 p=F BULLETLINE( A TITLELISTX;X; BORDE*J}R LINE CHARACTERSX; BLANKLINE! =========! =========! ======*K}===! ========= =======X;X; SPARK BAR GRAPHX;BULLETLINE! ==*L}=======! =========! =========! =========X*M};X; CREDITS & WHAT-NOTX; SCOLIN @=A LVL:A =A BUGS: ASTATUSLINE A fireA A bug *N} A TITLE1 A WRITTA AEN BY A TITLE2  A A  A A  TITLE3  A &A  A*O} A TITLE4 A A A A TITLE5 A analog cA Aomputing AX; ********************P}******X; * DISPLAY LIST MODIFIER *X; * BY Kyle Peacock *X; *************************X;X; SHIFTER*Q}%> ;;D-LIST INDEX.Q>;;# OF LINES TOP?COUNT;;MODIFY LMSs.QYPOINT;;GET Y-COORD. T?;;MULTIPLY BY 2.!>;;USE A*R}S INDEX."?GET#QSCREENBYTES9;;END OF$R>;;SCREEN RAM?%H?PASS1;;YES! BRANCH!&$>;;CLEAR X-REG.' ?PASS1(Q*S}SCREENBYTES9;;GET),;;SCREEN RAM &*OXPOINT;;ADD X-COORD.+PGAMELIST8;;& SAVE.,QSCREENBYTES9;;ALSO-O>;;ADD TO *T}HI-BYTE.PGAMELIST8;;& SAVE./2;;INCREMENT POIN-02;;TERS FOR NEXT1C;;LMS OPERAND2,;;TRANSFER.3O>4?5"?COU*U}NT;;ALL LINES DONE?6I?GET;;NO! BRANCH!7:;;LATER Y'ALL!!!8 ?COUNT9 ;;COUNTER:X;;#X; *****************************V}*<#X; * FIREBUG SCREEN MEMORY MAP *=#X; *****************************>X;?SCREENBYTES@ SCREENBASE A SCREEN*W}BASE B SCREENBASE C SCREENBASE D SCREENBASE E SCREENBASE F SCREENBASE*X} G SCREENBASE H SCREENBASE I SCREENBASE  J SCREENBASE  K SCREENBASE  L SCR*Y}EENBASE  M SCREENBASE  N SCREENBASE O SCREENBASE P SCREENBASE Q SCREENBASE*Z} R SCREENBASE S SCREENBASE T SCREENBASE U SCREENBASE V SCREENBASE W *[}SCREENBASE X SCREENBASE Y SCREENBASE Z SCREENBASE [ SCREENBASE \ SCREENBASE*\} ] SCREENBASE ^ SCREENBASE _ SCREENBASE ` SCREENBASE  a SCREENBASE! b*]} SCREENBASE" c SCREENBASE# d SCREENBASE$ e SCREENBASE% f SCREENBASE& g SCREENB*^}ASE' h SCREENBASE( i SCREENBASE) j SCREENBASE* k SCREENBASE+ l SCREENBASE,*_} m SCREENBASE- n SCREENBASE. o SCREENBASE/ p SCREENBASE0 q SCREENBASE1 r SCRE*`}ENBASE2 s SCREENBASE3 t SCREENBASE4 u SCREENBASE5 v SCREENBASE6 w SCREENBASE7*a} x SCREENBASE8 y SCREENBASE9 z SCREENBASE: { SCREENBASE; | SCREENBASE< } S*b}CREENBASE= ~ SCREENBASE>  SCREENBASE?  #X; *****************************#X; * FIREBUG INI*c}TIALIZATION *#X; * Tom Hudson & Kyle Peacock *#X; *****************************X;X; ************************X;*d} * ONE SHOT INITIALIZER *X; ************************X;X;INITX;X;SET UP CHARACTERSX;Q>;;CHSET S*e}TARTPHLO;;PUT IN POINTER$> ;;14 CHARS...&XTEMP;;TO LOAD CHLOOP$XTEMP;;GET CHAR #QCSTRT9;;AND START *f}ADDRPHLO;;PUT IN POINTER A;;NOW...T?;;MULT...T?;;POINTER... T?;;BY 8,>;;USE AS INDEX%>;;START CHAR COPY*g}CHL2QCDATA9;;GET CHAR DATAP@HLO7;;MOVE TO CHSET2;;NEXT CHAR BYTE3;;NEXT SET BYTE)>;;DONE 8?HCHL2;;*h}NO, LOOP BACK"XTEMP;;NEXT CHARICHLOOP;;LOOP IF MOREX;X; GENERAL VARIABLE SETTINGX;Q>;;CLEARPPLAYNO;*i};PLAYER #.PVBIT;;RAM VSCROLPHBIT;;RAM HSCROLPMINX;;MIN. X-COORD.$>CSCLPPSCORE9;;SCORESPSCOADD9;;& S*j}TUFF.0 ICSCLPQ>;;SET w/ 1.PMINY;;MIN Y-COORD.PFIRETIME;;FIRING.Q>TPMAXX;;MAX X-COORD.Q>+PM*k}AXY;;MAX Y-COORD.Q>;;CHARACTER UP-PMOVETIME;;DATA TIMER.PPHASETIME$>;;SET UP.&LIVES;;# OF LIVESQSTA*l}RTLEVELPLEVEL;;STARTING LEVELPBCDLVL;;STARTING LEVEL ?TYPESETQ?TYPEBASE9;;CHARACTERPTYPE9;;TYPE SETTING.*m}0;;SET THEM ALL. I?TYPESETX;#X; PLAYER/MISSILE INITIALIZATIONX;Q>>PSDMCTL;;DMA.Q>PLAYBSPPMBAS*n}E;;ADDRESS.Q>;;GRAPHICSPGRACTL;;CONTROL.Q>!;;PRIORITYPGPRIOR;;REG.Q>;;MISSILES 2 & 3PSIZEM;;ARE 4X *o}SIZE.Q>(;;MISSILE 2 X.PHPOSM0Q>;;MISSILE 3 X.PHPOSM0Q>;;CLEAR OUT> ?PMSETPMISS9;;MISSIL*p}ES.(>;;INSTALLE?PMSET2;;PLAYFIELD(>0;;BORDERD?PMSET2;;INTO MISSILESQ>PMISS9;;2 AND 3.Q> ?PM*q}SET20;;ALL DONE?H?PMSET;;NO! CONT.X;X; ************************X; * MULTIPLE INITIALIZER *X; **************r}***********X; INIT2 SOUNDOFF$>&VSTOP;;HALT VBLANK.&CH;;STUFF CHAR.X;X; GENERAL VARIABLE SETTING*s}X;00&CHANGE1;;TURN OFF&CHANGE2;;ALL SOUND&BULLNOISE;;RAM VARIA-&BOOMNOISE;;BLES. &EXNOISE &EATN*t}OISEQMINX;;SET LMS OPER-PXPOINT;;ANDS TO UPPERQMINY;;LEFT OF BOARD. PYPOINTQ>;;NO SPARKS AREPNOBULL;;*u}ACTIVE.$> ?SETBULLQ>;;CLEAR SPARKPBULLDIR9;;WORK AREA.0 I?SETBULL$>;;SET SPARK LINE Q>;;TO FU*v}LL ?SETBULL2;CAPACITY. PBULLETLINE 9 0 I?SETBULL2Q>;;SET BULLETPBULLPNT;;POINTER.X;X; FILL PLAY *w}AREA WITH DIRTX;$>;;CLEAR X-REG. ?FILL1A;;MOVE X TO A.T?;;MULTIPLY BY 2.?;;MOVE A TO Y.QSCREENBYTES8*x}PLO;;GET SCREENQSCREENBYTES8PLO;;ADDRESS.R>;;AT RAM END?F?FILL3;;YES! BRANCH!%>;;SET FOR FILL.*y} ?FILL2 Q>;;GET RANDOM #! RANDO;;(0 UP TO ACC-1)",;;ADD TWO TO#O>;;VALUE IN ACC.$P@LO7;;STORE IT.%1;;HAN*z}DLE NEXT.&I?FILL2;;BRANCH!'2;;NEXT RAM AREA.(!?FILL1;;JUMP ON IT!) ?FILL3*X;+"X; PLACE PRE-PROGRAMMED TUNNELS,*{}X;-$>;;CLEAR X-REG.. ?VECSET/%>;;CLEAR Y-REG.0 ?VECSET21Q?VECTORS9;;GET VECTOR2P?INITX8;;INITIAL X.32;;GE*|}T ADDITIONAL43;;VECTOR INFO.5)>;;LAST DATA BYTE?6H?VECSET2;;NO! BRANCH!7 ?VECPLOT8Q?INITX;;GET INITIAL X.9PX*}}COORD;;SAVE IT.:Q?INITY;;GET INITAIL Y.;PYCOORD;;SAVE IT.< XYFIND;;FIND RAM LOC.=%>;;CLEAR Y-REG.>C;;MOVE Y TO*~} A.?P@LO7;;STORE IN MEM.@Q?INITX;;IS X VECTOR ATAR?FINALX;;DESTINATION?BH?VECRESET;;NO! BRANCH!C%?INITY;;IS Y *}VECTOR ATD)?FINALY;;DESTINATION?EF?NEXTVEC;;YES! BRANCH!F ?VECRESETG,;;ADD X-DELTAHO?DELTAX;;TO X VECTOR.IP?I*}NITX;;SAVE IT.JQ?INITY;;ADD Y-DELTAK,;;TO Y VECTOR.L O?DELTAYMP?INITY;;SAVE IT.N!?VECPLOT;;PLOT NEXT.O ?NEXTVE*}CP(> ;;6 VECTORSQD?VECSET;;NEXT VECTOR.RX;SX; PLACE PROXIMITY BOMBSTX;U$LEVEL;;GET LEVEL #.V(> ;;IS IT*} >10 ?WD?NUMBMB;;NO! BRANCH!X$> ;;SET 10 AS MAX.Y ?NUMBMBZQ?NUMPROX9;;GET # OF[PBOMBCT;;BOMBS FOR LEVEL\>;*};& SAVE IN X.]?PLACEBOMBS^Q>:;;GET RANDOM #_ RANDO;;(0 UP TO ACC-1)`,;;THEN ADD THREE.aO>bT?;;MULTIPLY BY 2.*}c?;;MOVE A TO Y.dQSCREENBYTES8ePLO;;GET SCREEN RAMf PBOMBL9gQSCREENBYTES8hPLO;;Y-COORDINATE.i PBOMBH9*}jQ>s;;GET RANDOM #.k RANDO;;(0 TO ACC-1)l,;;NOW ADD SIX.mO>nL>;;BIT 0 ON.o?;;MOVE TO Y.pQ@LO7;;GET LOCAT*}IONqF?PLACEBOMBS;;TUNNEL!r R>BOMBsF?PLACEBOMBS;;IT'S A BOMB!tQ>BOMB;;BOMB CHARACTER.uP@LO7;;STORE IN RAM.v,;;*}STORE NEIGH-wO>;;BORING CHARA-x3;;CTER IN ADJA-yP@LO7;;CENT LOCATION.z1;;ADD CORRECT{C;;VALUE INTO|,;;BOMB DAT*}ABASE}OBOMBL9;;& SAVE BOMB'S~PBOMBL9;;X & Y COORDS.Q>;;RESET BOMBPARMED9;;WITH 255.0;;HANDLE NEXT.I?PLA*}CEBOMBSX;X; PLACE BORDERSX;$>;;CLEAR X. ?BOARD1QSCREENBYTES9;;AT ENDR>;;OF SCR BYTES?F?BOARD*}2;;YES! BRANCH!PLO;;SAVE RAM LOC.QSCREENBYTES9PLO;;BOTH LO & HI.%>;;BORDER CHAR.C;;MOVE Y TO A.P@L*}O7;;STORE IT.%>P@LO7;;STORE IT.2;;MOVE TO NEXT2;;SCREEN RAM.!?BOARD1;;JUMP ON IT. ?BOARD20;;SCREEN R*}AM 0;;END.QSCREENBYTES9PLO;;GET LAST 1/2QSCREENBYTES9PLO;;& FIRST 1/2QSCREENBYTESPLOW;;PAGE &*} SAVEQSCREENBYTESPLOW;;THEIR LOCS.%>;;LOAD POINTER.Q>;;BORDER CHAR. ?BOARD3P@LO7;;SAVE INTO RA*}MP@LOW7;;AT TOP & BOTTOM1;;OF BOARD.I?BOARD3;;HANDLE ALL... SHOSCO;;SHOW SCORE SHOLVL;;SHOW LEVEL SHOL*}IV;;SHOW LIVESX;X;RESET ALL ENEMIESX;$>;;CLEAR ALL 30Q>;;ZERO OUT...CLENPEACT9;;ACTIVE FLAG0;;NEXT*} ENEMYICLEN;;LOOP UNTIL DONEX;X;NOW INITIALIZE 4 ENEMIESX;$>;;4 OF 'EMIELPQ>;;SET...PEACT9;;ACTIV*}E FLAGQ>;;GIVE IT...PEDIR9;;RANDOM DIRECTIONQENSTH9;;GET ADDRESS...PEADH9;;OF EACH...PADL;;ENEMY...*}QENSTL9;;AND SAVE! PEADL9PADLQ>;;SET UP AS...PETYP9;;TYPE 8%>;;AND DRAW...P@ADL7;;ON DISPLAY3*},O> P@LO70;;NEXT ENEMYIIELP;;LOOP IF MOREQ>;;START UP IN...PGENFLG;;MATING SEASON!X;X;INIT EGG*}SX;QLEVEL;;GET LEVEL;;;AND DECREMENTS>;;BY 1,V?;;DIVIDE BY 8,V?V?PEGGTOT;;SAVE A MINUTE,Q>;;*}GET 3,;;;SUBTRACT TEMPSEGGTOT;;FROM IT,PEGROUP;;SAVE # OF NESTS>;;USE AS INDEX...QIEGGCT9;;GET BABY COUNT*}PEGGTOT;;AND SAVE...PEGGS;;IN WORK...PEGGIX;;AREAS"IEGGL1$EGROUP;;GET NEXT COUNTQEGGSTL9;;GET ADDRESS...*}PHLO;;OF NEST CENTER QEGGSTH9 PHLO$> ;;13 BABIES!IEGGL2QHLO;;GET NEST ADDR...,;;AND ADD...OEADDL9;;D*}IRECTION...PADL;;OFFSET %EGGIX PEGGL8 QHLO OEADDH9 PADL PEGGH8Q>;;ACTIVATE...PEGGACT8;;B*}ABY%>Q> ;;AND DRAW...P@ADL7;;BABY...3;;ON SCREEN!,O> P@ADL7"EGGIX;;NEXT INDEX0;;NEXT BABY*}IIEGGL2;;LOOP IF MORE"EGROUP;;NEXT NESTIIEGGL1;;LOOP IF MOREX;X;PLACE FIREBUGX;Q>5SCREENBASE PBU*}GL PADLQ>4SCREENBASEPBUGL;;SAVE FIREBUG'SPADL;;INITIAL ADDRESSQ>;;GET BUG CHAR.%>;;AND DRAW*}... P@ADL7;;ON SCREEN 3 , O>  P@ADL7 SETCOLORSQ>;;START...PVSTOP;;VBLANK AGAIN!:;;INIT DONE!X*};X; COLOR SELECTIONX; SETCOLORSQRANDOM;;RANDOM #.M>;;CLEAR LO-NIBBLEL>;;BIT 1 ON.PNEWBACK;;SAVE IT*}.$>;;HANDLE 4 REGs.?SETCOLORSQRANDOM;;RANDOM #.M>;;CLEAR LO-NIB.L?ORBASE9;;TURN ON BITS.PCOLOR09;;S*}AVE IT. 0;;HANDLE ALL...!I?SETCOLORS"QCOLOR0;;GET COLOR FOR#PPCOLR0;;BORDER MISS-$PPCOLR0;;ILES.%:&*}X;'X; MOMENTARY PAUSE(X;) INIT3*QRTCLOK;;SYSTEM CLOCK.+,;;ONE SECOND,O>F;;PAUSE...- ?INIT3.RRTCLOK;*};1 SEC UP?/H?INIT3;;NO! BRANCH!0!INIT2;;YES! WHOOSH!!!1X;2#X; SOUND REGISTER INITIALIZATION3X;4 SOUNDOFF5 SIO*}INV;;INIT SOUNDS.6$>;;HANDLE ALL.7Q>;;STUFF ZERO.8 ?SOUNDOFF9PAUDF19;;INTO REGISTER.:0;;ALL DONE?;I?SOUNDOF*}F;;NO! BRANCH!<PAUDCTL;;STUFF CONTROL.=:;;BEAM ME UP...>X;? ?ORBASE@ = ===A ?TYPEBASEB ====*}C ?NUMPROXD  ==='=1E ;=E=O=Y=cF ?VECTORSG ?= =?===H @= =@===I ?=!=?=4==J*} @=!=@=4==K )= =>= ==L A= =V= ==MDIRADL ===NDIRADH ===OOK ====*}===P =======Q ==RCHANCE ==@=@=@S @====T =====U ==*}VSDIR ===W ===X ===Y ===ZENSTH 5SCREENBASE[ 5SCREENBASE9\ 5SCREENBA*}SEE] 5SCREENBASE^ENSTL 4SCREENBASE_ 4SCREENBASE9` 4SCREENBASEEa 4SCREENBASEbEADDL =*}====c ~=~=====dEADDH =====e ======fEGGSTL 4SCREENBASEg 4SCR*}EENBASE_h 4SCREENBASEi 4SCREENBASE_jEGGSTH 5SCREENBASEk 5SCREENBASE_l 5SCREENBASEm 5S*}CREENBASE_nIEGGCT  ==&=3oCSTRT ==== =(=pp x====q =r!CDATA =======*}s ===t ===u ====@===@v ===@====w @====@===x ===*}@====y =======z ==== =/=/= { @===| ===} =f=f=f~ f=f=f=*} =d=d=d d=d=d= =`=`=` `=`=`= =@=@=@ @=@=@= === ===*}X;!X; ***************************!X; * RANDOM NUMBER GENERATOR *!X; ***************************X; RANDOF?RET;*};IF = 0 BRANCH.P?HOLD;;SAVE ACC.QRANDOM;;GET RANDOM #. ?RAN1R?HOLD;;IS IT < ACC?D?RET;;YES! BRANCH!V?;;*}NO. DIVIDE BYV?;;TWO. TRY AGAIN.!?RAN1;;JUMP ON IT!?RET:;;BOGGIE... ?HOLD ;;TEMP STORAGE.X;!X; ****}************************!X; * X & Y COORDINATE TRACER *!X; ***************************X; XYFIND&?HOLD;;SAVE X-R*}EG.QYCOORD;;GET Y-COORD.T?;;MULTIPLY BY 2.>;;MOVE A TO X.QSCREENBYTES9;;GET RAM,;;BYTE & ADDOXCOORD;;X-C*}OORD.PLO;;SAVE IT.QSCREENBYTES9PLO;;GET HI BYTE.$?HOLD;;RESTORE X-REG. :;;BAMF!!! ?INITX  ?IN*}ITY ?FINALX ?FINALY ?DELTAX ?DELTAY X; ***********************X; * FINE SCROLL CONTROL *X;*} * BY Kyle Peacock *X; * [WHO ELSE?!?] *X; ***********************X;X; SCROLLQBUGL;;BUG A*}T SCREENRDLISTSTART;;TOP?E?VTEST1;;NO! BRANCH!Q>;;YES! CLEAR &F?VSET;;BRANCH! ?VTEST1 RDLISTEND;*};BUG AT BOTTOM?D?VSCROLL;;NO! BRANCH!Q>;;YES! SET. ?VSETP?VDIR;;SAVE VERT.FLAG$>;;SET VERT SCROLL&?V*}COUNT;;DISTANCE. ?VSCROLLQ?VCOUNT;;SCROLL NOW?F?VSTORE;;IF NOT, BRANCH.Q?VDIR;;GET DIRECTIONH?DOWN;;TO SCR*}OLL IN.?UP"VBIT;;DEC RAM VSCROL.I?VSTORE;;IF >0 BRANCH.?UP1QYPOINT;;GET Y-COORD.RMINY;;AT BOARD TOP?*}H?UP2;;NO! BRANCH!#VBIT;;YES! HALT!?VHALT;;SCROLL. BRANCH.?UP2Q>;;RESET RAM COPYPVBIT;;OF VSCROL."*}YPOINT;;DEC Y-COORD.!?VDEC;;JUMP ON IT! ?DOWN#VBIT;;INC RAM VSCROLQVBIT;;IF <8 BRANCH.R> D?VSTOREQ*}YPOINT;;GET Y-COORD.RMAXY;;AT BOARD BOTTOM?H?DOWN2;;NO! BRANCH!"VBIT;;YES! HALT!?VHALT;;SCROLL. BRANCH. ?*}DOWN2Q>;;RESET RAM COPYPVBIT;;OF VSCROL.#YPOINT;;INC Y-COORD. ?VDEC"?VCOUNT;;DEC VERT!?VSTORE;;SCROLL*} COUNT. ?VHALTQ>;;HALT VERTP?VCOUNT;;SCROLL COUNT. ?VSTOREQVBIT;;GET RAM COPY &PVSCROL;;SAVE IN OS.*}QDLISTSTART;;TEST TOM>;;SEE IF BUG ISP?HOLD;;TOO FAR LEFTQBUGL;;OR TOO FARM>;;RIGHT OF SCREEN ;;;CENT*}ER. S?HOLDR>;;VALUE < 30?D?HTEST2;;YES! BRANCH!Q>;;TOO FAR RIGHT.F?HSET;;BRANCH! ?HTEST2R>;;VALU*}E > 14?E?HSCROLL;;YES! BRANCH!Q>;;TOO FAR LEFT. ?HSETP?HDIR;;SAVE DIRECTION.Q> ;;SET HORT SCROLLP?HCO*}UNT;;DISTANCE. ?HSCROLLQ?HCOUNT;;HORT SCROLL?F?HSTORE;;NO! BRANCH!Q?HDIR;;YES! GET SCROLL F?RIGHT;;DIRECTIO*}N.  ?LEFT #HBIT;;INC RAM HSCROL. QHBIT;;IS IT > 3? R>D?HSTORE;;NO! BRANCH!QXPOINT;;AT LEFT EDGE? RMINX*}H?LEFT2;;NO! BRANCH!"HBIT;;RESET HSCROL!?HHALT;;& HALT SCROLL. ?LEFT2Q>;;RESET HSCROLPHBIT;;RAM COPY.*}"XPOINT;;DEC X-COORD.!?HDEC;;JUMP ON IT! ?RIGHT"HBIT;;DEC RAM HSCROLI?HSTORE;;IF >0 BRANCH!QXPOINT;;GE*}T X-COORD.RMAXX;;AT RIGHT EDGE?H?RIGHT2;;NO! BRANCH!#HBIT;;RESET HSCROL !?HHALT;;& HALT SCROLL.! ?RIGHT2"Q*}>;;RESET RAM#PHBIT;;HSCROL &$#XPOINT;;INC X-COORD.% ?HDEC&"?HCOUNT;;DEC HORT SCROLL'!?HSTORE;;COUNT.( ?HHAL*}T)Q>;;HALT HORT*P?HCOUNT;;SCROLL COUNT.+ ?HSTORE,QHBIT;;SAVE RAM HSCROL-PHSCROL;;INTO OS..$PLAYNO;;GET JOYS*}TICK/%STICK09;;POSITION.0)>;;CENTERED?1F?SCROLLDONE;;YES-BRANCH.2)?PREVIOUS;;UNTOUCHED?3F?SCROLLDONE;;YES-BRA*}NCH.4Q?TYPESET8;;UPDATE5PTYPE;;BUG FACING.6?SCROLLDONE7'?PREVIOUS;;SAVE STICK.8:;;CHOW BABY...9 ?PREVIOUS:*} ;;PREVIOUS STICK;?TYPESET;BUG HEADINGS<! ========== ?HOLD> ;;TEMP STORAGE? ?VDIR@ ;*};VERT DIRECTIONA ?HDIRB ;;HORT DIRECTIONC ?VCOUNTD ;;VERTICAL COUNTE ?HCOUNTF ;;HORIZONTAL COUNTVDIR@ ;(r